Пьезопластина

Тема в разделе "Arduino & Shields", создана пользователем Artclonic, 23 фев 2019.

  1. Artclonic

    Artclonic Гик

    Добрый день, подскажите код "считывания" электрических сигналов с пьезопластины... Я так понимаю, что это напряжение? спасибо.
     
  2. Сначала вам нужно узнать точные электронные характеристики вашей пластины. Потом, скорее всего, придется собрать собрать усилитель сигнала. И только потом можно будет думать о коде.
     
  3. Artclonic

    Artclonic Гик

    Вот такие...

     
  4. На форуме и вообще в интеренет полно тем про самодельные ударные на ардуино. Смотрите, что там люди делают.
     
  5. Artclonic

    Artclonic Гик

    Таким не убью ардуинку? Или резисторы нужны все таки... Или резисторы там нужны для градации барабанов?
    [​IMG]

    Посмотрел, кода сложные считывание с нескольких пьезиков...еще я так понял что делятся по силе сигнала...
    Мне бы просто код считывания с одного и вывода на монитор порта... Я так понимаю, это считывание с аналового пина?
     
  6. Daniil

    Daniil Гуру

    А какое у них максимальное выходное напряжение?
     
  7. Artclonic

    Artclonic Гик

    Я так понял-3-5В
     
  8. parovoZZ

    parovoZZ Гуру

    а без разницы. Оно всё целиком просядет на защитных диодах.
     
  9. Artclonic

    Artclonic Гик

    Я думаю, там код должен три строки. Подскажите
     
  10. Нету в ардуино никаких защитных диодов, не надо никого дезинформировать.
     
  11. parovoZZ

    parovoZZ Гуру

    не надо мне приписывать то, что я не говорил.
     
  12. Artclonic

    Artclonic Гик

    Правильно понимаю, что надо найти код, который программирует вольтметр? А это аналоговый вход?
    Оно?
    Код (C++):
    // программа измерения напряжения

    // на аналоговых входах A0 и A1

    #include <MsTimer2.h>

    #define MEASURE_PERIOD 500  // время периода измерения
    #define R1  15.  // сопротивление резистора R1
    #define R2  4.22 // сопротивление резистора R2

    int timeCount;  // счетчик времени
    float u1, u2;   // измеренные напряжения

    void setup() {
      Serial.begin(9600);  // инициализируем порт, скорость 9600
      MsTimer2::set(1, timerInterupt); // прерывания по таймеру, период 1 мс
      MsTimer2::start();              // разрешение прерывания
    }

    void loop() {

      // период 500 мс
      if ( timeCount >= MEASURE_PERIOD ) {
        timeCount= 0;

        // чтение кода канала 1 и пересчет в напряжение
        u1=  ((float)analogRead(A0)) * 5. / 1024. / R2 * (R1 + R2);
        // чтение кода канала 2 и пересчет в напряжение
        u2=  ((float)analogRead(A1)) * 5. / 1024. / R2 * (R1 + R2);

        // передача данных через последовательный порт
        Serial.print("U1 = ");     Serial.print(u1, 2);
        Serial.print("   U2 = ");  Serial.println(u2, 2);        
      }
    }

    // обработка прерывания 1 мс
    void  timerInterupt() {
      timeCount++;
    }
     
  13. Artclonic

    Artclonic Гик

    А вот еще попроще
    Код (C++):
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
    int analogInput = 0;
    float vout = 0.0;
    float vin = 0.0;
    float R1 = 100000.0; // сопротивление R1 (100K)
    float R2 = 10000.0; // сопротивление R2 (10K)
    int value = 0;
    void setup(){
       pinMode(analogInput, INPUT);
       lcd.begin(16, 2);
       lcd.print("DC VOLTMETER");
    }
    void loop(){
       // считывание аналогового значения
       value = analogRead(analogInput);
       vout = (value * 5.0) / 1024.0;
       vin = vout / (R2/(R1+R2));
       if (vin<0.09) {
       vin=0.0;// обнуляем нежелательное значение
    }
    lcd.setCursor(0, 1);
    lcd.print("INPUT V= ");
    lcd.print(vin);
    delay(500);
    }
     
  14. Daniil

    Daniil Гуру

    Лучше почитайте про analogRead, чем чужой код разбирать
     
  15. parovoZZ

    parovoZZ Гуру

    обычно код не ищут, а пишут.
     
  16. Artclonic

    Artclonic Гик

    Вы правы... почитал... Отцифровывает в диапазоне от 0 до 1023. А как узнать чему соответствует 1023???
    Допустим я мерю напряжение от пьезо пластины, как понять какой максимальное у нее напряжение? Как понять чему реально сооответствует 1023? Или это надо калибровать и назначать?
     
  17. parovoZZ

    parovoZZ Гуру

    в абдурине - напряжению питания. А вообще настраивается так, как программисту удобно.

    Да. В твоем случае - нет.

    Для чего? Достаточно знания того, что это максимальное значение из всех возможных.
     
  18. Daniil

    Daniil Гуру

    Нужно ещё раз почитать про analogRead, только уже нормальный источник найдите в амперке вики, arduino.ru или arduino.cc
     
  19. Artclonic

    Artclonic Гик

    Вроде проясняется... Скажите, а можно ли analogRead(A0); в течении кода менять на
    write. Иными словами одним пьезиком и излучать и принимать?
     
  20. Daniil

    Daniil Гуру

    Ответ "можно". Ознакомьтесь с pinMode, digitalWrite и analogWrite. Обратите внимание, что analogRead и analogWrite работают не со всеми пинами и они разные