Скачут показания. Пин аналоговый. Пьезо. Разные компьютеры.

ban78
Offline
Зарегистрирован: 27.06.2018

Эта проблема меня чуть не свела с ума.

На одном ПК все хорошо, на другом показания меняются синусоидно. от 0 до 80-120.

Подключение пьезо пищалки(датчик стука)как обычно. Пин А7, Gnd. Между ними 1МОм. arduino nano.

В скетче задаю A7,INPUT_PULLUP.

Смотрим данные с пина 7.

 

На 1 ПК: В терминале идут Нули. Красота. Стучим по пьезо, идут цифры и опять нуля. Хорошая работа.

На 2 ПК: Не подключаем пьезо, идут Нули. При подключении пьезы начинаются волны. Плохая работа.

 

Скетч из примера. Самый простой, вывод в терминал данных с аналога.

Подключение обычное. Перепроверял 150 раз. На разных (двух) компах разный результат.

Оставлю здесь для истории.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ban78, какой МК? На меге328   пин A7 не имеет PullUP. Подтягивайте резистором. Без подтяжки вход работает как антенна.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ban78 пишет:

В скетче задаю A7,INPUT_PULLUP.

С какой целью? Оно так не работает.

Давайте сюда скетч и схему.

ban78
Offline
Зарегистрирован: 27.06.2018

странно.

на норм ПК. Без пуллап, без подключенного пьезо идут стабильно рандомные цифры в диапозоне 55-65

пишу пуллап, идут норм 0. 

Так же и на другом ПК. Без пуллап цифры 200-300... с пуллап 0.

Конечно я попробую А0. 

да, 328. Попробую другую МК взять. Мини. Но мне кажется дело в ПК.

 

ban78
Offline
Зарегистрирован: 27.06.2018
обычный скетч
 
void setup() {
    pinMode(A7, INPUT_PULLUP); 
    Serial.begin(9600);
}
 
void loop() {
    int sensorValue7 = analogRead(A7);
    Serial.print("   sensorValue7   ");Serial.println(sensorValue7);
    delay(20);      
}
ban78
Offline
Зарегистрирован: 27.06.2018

раньше даже не писал pinMode(A7, INPUT_PULLUP); 

без него на норм ПК все работало.

Шли цифры 50-60 в терминал без пьезо. При подключении пьезо становилось 0. И реагировал на постукивания пьезо.

А на дурацком ПК. шли цифры, а при подключении пьезо цифры от 0 до 300 волнами.

пример:

0

0

50

230

170

40

0

0

10

60

160

290

ну и вниз

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

У А7 нет цифрового буфера и нет пулапа

ban78
Offline
Зарегистрирован: 27.06.2018

не знаю тогда к чему он там подтягивается.

но на входе стабильно 0. с пулапом. без него рандом цифры. Это факт. Глазками это вижу.

но пулап тут ни при чем. И без него не работает.

ban78
Offline
Зарегистрирован: 27.06.2018
void setup() {
 
//pinMode(A7, INPUT_PULLUP);
  Serial.begin(9600);
}
 
void loop() {
 
  int sensorValue7 = analogRead(A7);
  Serial.println(sensorValue7);
  delay(20);      
}
 
Вот так тоже не работает на 2 ПК. И работает на 1 ПК.
ban78
Offline
Зарегистрирован: 27.06.2018

в моем случае это А7 и нано

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ban78, разница в том, что с одного компьютера идёт наводка 50 Герц а с другого нет. Где не идёт -либо гальваноразвязан от сети, либо заземлен. 

Кстати PullUp там не нужен. Была темка, про пьезодатчики, там в посте #60 есть правильная схема включения.

ban78
Offline
Зарегистрирован: 27.06.2018

вот, мудрый человек. скорее всего наводка.

У меня и ПК странно работает. Не выключается(все работы закончит, экран погаснет, а куллер крутится). После принудительно отключения работает вся переферия USB.

 

ban78
Offline
Зарегистрирован: 27.06.2018

Подскажите лекарство от этих волн в показаниях? 

Напряжение в сети должно быть любым и с заземлением и без. 

Возможно к схеме что-то добавить, чтобы волны эти не влияли на показания???7????????

 

 

После нескольких дней тестов дома:

1. Пробовал 2 блока питания подключать поочереди: 

    ОДин напрямую к миниUSB, Мега мини, вроде показания стабильно 0.

    Другой блок питания к пину 5V, показания плавают волной.

2. Подключаю UNO к USB ПК, волны.

3. Подключаю от LiPo с преобразователем на 5 V и к пину 5V на ардуино, мега мини, все супер, стабильно 0.

3.1. Если включить от батарейки и... штекером USB (земля)(от миниUSB от меги) слегка дотронутся до USB на ПК(земля), все...волны...

3.2. Иногда при размыкании земли с ПК идет стабильно 0. НО иногда волны продолжаются... стабильно пока не выключишь батарейку. 

И это все на простой схеме на простой UNO с пьезо + мегаОм резистором между (GND+А0).

 

И это все дома. На работе все работает зашибись в разных вариациях, ни разу не волны.(только если один кабель разомкну).

ban78
Offline
Зарегистрирован: 27.06.2018

ban78
Offline
Зарегистрирован: 27.06.2018

вот эта вся лапша работает.

А дома нет.

 

ban78
Offline
Зарегистрирован: 27.06.2018

новые вводные.

Блок питания заменил.

Теперь если пьезодатчик подключать 10 см проводками, то вроде показания норм - ноль.

Но, если как мне надо, увеличить провод до 6 метров, то показания опять волнами.

Возможно плохой контакт провода. Надо перепроверить.

Провод, витая пара.

ban78
Offline
Зарегистрирован: 27.06.2018

нет, 2 разных провода одинаковой длины - 6 метров.

Показания скачут.

что делать уже не знаю(

negavoid
Offline
Зарегистрирован: 09.07.2016

Размещать ардуину рядом с пьезодатчиком, а 6 метров провода, нахватывающего кучу наводок, заменить на usb удлинитель и им подключать ардуину. Волны - это 50/60 Гц от сети, и никуда от них не деться; в чистом поле их не будет.

ban78
Offline
Зарегистрирован: 27.06.2018

печально. Но вблизи ардуинку никак нельзя. Не по феншую будет.

буду мучать дальше.

ban78
Offline
Зарегистрирован: 27.06.2018

заменил провод на экранированный. 2 проводка в фольгированной обмотке.

Показания теперь от 0 до 5.

Уже лучше. Пьезо реагирует отлично, при ударе более 300-400.

Значит проблемы в наводке. Вопрос решен качественным проводом до пьезо

ban78
Offline
Зарегистрирован: 27.06.2018

не помогло(( 4 метра еще более менее, 6 метров, данные уже до 70.

Буду прокидывать землю на 220.