Шим сигнал между двумя ардуинами нано

Тема в разделе "Arduino & Shields", создана пользователем mihaj109, 3 авг 2022.

  1. mihaj109

    mihaj109 Нерд

    Привет. Первая ардуина считает импульсный сигнал и выводит шим на д6 напимер значение 120
    Этот вывод соединён со входом а6 на второй ардуине. Напряжение через мультиметр соответствует этим 120 и равен 2.3в
    Но ардуино видит 0 и 1023. Это можно исправить как то? Если частоту шим увеличить на первой, это поможет? Или обвязку какую на вторую плату? Кидать дополнительно кабель ну очень не хочется.
    Еще я так понял можно соединить тх первой нано и рх второй и передавать значение напрямки. Потеряю ли я при таком раскладе подключение каждой к пк и монитор порта ?
     
  2. issaom

    issaom Гуру

    А вам что передавать то надо? Связь можно организовать через аппаратный UART, программный UART, SPI, I2C. Какое расстояние между платами?
    А то что придумали вы не жизнеспособно в принципе.
     
  3. Рокки1945

    Рокки1945 Гуру

    конечно, надо поставить последовательно резистор и параллельно конденсатор - это и будет сглаживающий фильтр - частота невысокая 2.2 кОма и 10 мкф нормаалёк будет
     
  4. mihaj109

    mihaj109 Нерд

    Спасибо, попробую.
     
  5. mihaj109

    mihaj109 Нерд

    Надо передать величину напряжения до 5в. 0-255 вполне хватит. Расстояние метра два, но крайне труднодоступное. Обратно передавать не надо. Желательно без библиотек, а то если и в них вникать..
     
  6. Рокки1945

    Рокки1945 Гуру

    ставьте 2 звена
     
  7. b707

    b707 Гуру

    надо завести сигнал на пин с прерыванием, например 2, измерить длительность HIGH и LOW компоненты сигнала и рассчитать скважность ШИМ
    Код (C++):
    uint16_t volatile LL,HL;
    int FRQ,DUTY;
    void log1(){
        LL=TCNT1;
        TCNT1=0;
        attachInterrupt(0,log0,FALLING);
    }

    void log0(){
        HL=TCNT1;
        TCNT1=0;
        attachInterrupt(0,log1,RISING);
    }

    void setup(){
    Serial.begin(9600);
    attachInterrupt(0,log1,RISING);
    TCCR1A=0;TCCR1B=0;TCNT1=0;
    TCCR1B =(1<<CS00)|(1<<CS01);//тик таймера 4мкс
    }

    void loop(){
    int _HL,_LL;
    cli();
    _HL=HL;
    _LL=LL;
    sei();
    FRQ=250000/(_HL+_LL);
    DUTY=(_HL*100)/(_HL+_LL);
    Serial.println(FRQ);
    Serial.println(DUTY);
    delay(1000);
    }
     
    Последнее редактирование: 3 авг 2022
  8. parovoZZ

    parovoZZ Гуру

    А что мешает гонять значение прямо в цифре?
     
  9. mihaj109

    mihaj109 Нерд

    Да в том и загвоздка, что у меня где-то помехи, и счётчик работает криво при нагрузке. поэтом пришлось отказаться от прерываний. Этот сигнал теперь считает первая ардуина
     
  10. mihaj109

    mihaj109 Нерд

    В смысле передавать шим и считывать его импульсы? Неее, я только ушел от этого
     
  11. parovoZZ

    parovoZZ Гуру

    Подключи кабель на вход RX и передавай все в цифре.
     
  12. mihaj109

    mihaj109 Нерд

    Я буду получать тоже число,что и передал от 0 до 255 или крайние значения? А считывать через сиреал? Связь с пк же останется? И монитор порта? На первой ардуине оставить на д6?, не тх?
    Я так понял надо почитать про работу рх тх на ардуине. Спасибо за идею!!
     
    Последнее редактирование: 4 авг 2022
  13. issaom

    issaom Гуру

    Есть библиотека software serial, можно организовать serial на любых свободных портах - тогда связь к ПК точно не пропадет.
     
  14. b707

    b707 Гуру

    пипец... приехали...
    А еще новички обижаются, что им никто серьезно не отвечает...
    Вот так ответишь как нормальному - а тебе в ответ "что такое Сериал?"
    И думаешь - зачем только время тратил
     
  15. ИгорьК

    ИгорьК Гуру

    Вот ключевая фраза ТС, которую следует учитывать, тратить СВОЕ время на ответ или нет.
     
  16. mihaj109

    mihaj109 Нерд

    Ну если можно сделать проще, то зачем лишняя инфа. Ну если проще нельзя, то можно и голову почесать. Просто пока разберешьсч пока на практике нюансы все прознаешь уйдёт не один вечер, а если можно пару резисторов припаять за пару минут и это решит проблему, то почему бы и нет.
     
  17. mihaj109

    mihaj109 Нерд

    это спасибо!!! Если фильтр не поможет, буду кабель пытаться бросать
     
  18. issaom

    issaom Гуру

    Зачем бросать кабель? там 2 провода нужны, один земля второй между виртуальными Rx Tx
     
  19. mihaj109

    mihaj109 Нерд

    а , точно. вот я лоб. спасиб
     
  20. Airbus

    Airbus Радиохулиган Модератор

    А по радиоканалу? Типа так