Skocz do zawartości

Arduino jako czujnik analogowy lub cyfrowy


Pomocna odpowiedź

Napisano

Cześć,

chciałem zapytać czy jest możliwe ustawienie komunikacji z Arduino w taki sposób, żeby działał on jako czujnik analogowy lub cyfrowy? Próbowałem coś takiego zrealizować, chodzi mi o to, że np. podpinam drugie arduino, które pełni rolę czujnika analogicznie jak jakikolwiek inny czujnik (VCC,GND, AOUT/DOUT) i na pierwszym arduino pełniącym rolę centralki odbieram te sygnały.

Próbowałem to zrobić, poniżej kod - niestety zwraca śmieci - wartości albo mają 0 albo 634/635 mimo, że próbuję przesłać liczbę 127.

Kod nadajnika:

const int outputPin = 9;

void setup() {
  pinMode(outputPin, OUTPUT); // Ustaw pin jako wyjście
}

void loop() {
  int sensorValue = 127;

  // Modulacja PWM
  int pwmValue = map(sensorValue, 0, 1023, 0, 255);
  analogWrite(outputPin, pwmValue);

  delay(100);
}

Kod odbiornika:

const int inputPin = A5; // Pin, na którym odbieram sygnał PWM

void setup() {
  Serial.begin(9600);
}

void loop() {
  int pwmValue = analogRead(inputPin); // Odczytaj wartość z pinu A5
  
  Serial.println(pwmValue);

  delay(100);
}

Z góry dziękuję za wsparcie 🙂

@mdadela witam na forum 🙂 Idziesz w dobrą stronę, ale pominąłeś jeden temat. PWM na wyjściu Arduino nie daje tak naprawdę zmiennego napięcia, bo... to sygnał PWM. To czego potrzebujesz to przetwornik DAC (ang. digital-to-analog converter), ale małe, popularne Arduina nie posiadają takiego peryferium. Można to jednak obejść dodając na wyjściu Arduino rezystor i kondensator: zobacz przykładowe schematy. Możesz też wykorzystać zewnętrzny moduł, który będzie pełnił funkcję DAC.

Inna, popularna opcja połączenia dwóch Arduino to UART, zakładam jednak, że z jakiegoś powodu celowo potrzebujesz tutaj komunikacji analogowej 🙂 

Inna opcja: zastosować ESP32 zamiast Arduino. Cena podobna, programuje się praktycznie tak samo, ale ma dwa ośmiobitowe przetworniki DAC.

  • Lubię! 1
(edytowany)

@mdadela  

analogWrite()
  

służy do ustawiania i generowania sygnału PWM na konkretnym pinie, a nie do przesyłania informacji między dwoma płytkami...poczytaj o uarcie (o komunikacji), jeszcze pytanie, ile ma być tych płytek jako "czujniki"? I na jaką odległość będą od siebie płytki??

Edytowano przez farmaceuta
45 minut temu, farmaceuta napisał:

służy do ustawiania i generowania sygnału PWM na konkretnym pinie, a nie do przesyłania informacji między dwoma płytkami..

Autor chciał wykorzystać to w taki sposób, że na "wyjściu" jednego Arduino miało zmieniać się napięcie, aby druga płytka mogła odczytywać te informacje jak z czujnika analogowo. To nie jest takie złe rozwiązanie, problem w tym, że tutaj potrzebny jest DAC lub zmodyfikowany PWM. Wtedy wszystko zadziała 😉

  • Lubię! 1

Taka dygresja: często w ESP32 (znanym ze świetnej jakości przetworników) wykorzystuje się podłączenie wyjścia DAC do wejścia analogowego w celu kalibracji ADC.

  • Lubię! 1

W przemyśle często tak się robi, że jedna centralna jednostka zbiera dane z wielu rozsianych czujników. Tam najczęściej stosuje się RS485 i protokół MODBUS RTU, lub standard HART (cyfrowa transmisja na analogowej pętli 4-20mA), ale HART to wyższa szkoła jazdy.

  • Lubię! 1

Dziękuję za wszystkie odpowiedzi :-) Generalnie myślałem o sygnale analogowym, ponieważ na razie do moich zastosowań na ogół wystarcza. Natomiast sygnał cyfrowy jest chyba faktycznie wygodniejszy. Muszę zatem coś więcej poczytać o UART i RS485, myślę że to są wątki w które będę chciał pójść, a na razie jestem z nich kompletnie zielony :-) 

sensory, które mają 3 przewody i zwracają sygnał np. 0-10V to klasyk w automatyce.

są dostępne moduły, które konwertują PWM na sygnał 0-10V - czym to się będzie różnić od "analogWrite" i kondensatora na wyjściu - lepsza wydajność prądowa/ładniejsze zbocza przy zmianie - co za tym idzie dłuższe przewody możesz zastosować itp. Chociaż to samo możesz osiągnąć dodając jakiś wzmacniacz operacyjny za arduino (te moduły to w sumie nic innego jak wzmacniacz operacyjny na płytce).

@dambo odejdę nieco od tematu autora, w automatyce klasyką raczej jest 4-20mA przy wykorzystaniu czujników, a z kolei nastawniki którymi sprawdzałem pętlę prądowe mają nawet 0-24mA. Po to aby mieć pewność, że taka przepustnica na sterowana pętlą prądową na pewno się zamknie bądź otworzy. Sygnały napięciowe są rzadkością, przynajmniej u mnie gdzie miałem od groma czujników do aplisensa, termopar czy przetworników ciśnienia od Siemensa. I do w pętli prądowej możliwe jest wykorzystanie protokołu HART jak pamiętam, dostęp do danych przetwornika jest znacząco ułatwiony z poziomu szafki rozdzielczej zamiast wspinać się kilkanaście metrów na kocioł 

  • Lubię! 2

To jak już offtopic... przed rozpowszechnieniem DMX512 królował w technice oświetlenia sceny standard napięciowy 0...-10V. Pracowałem na takich urządzeniach (Lightmaster, Sirius) i walka z zakłóceniami w nieekranowanych kablach to była mordęga. A wtedy (poprzednie tysiąclecie) zdobycie porządnego kabla sterującego było praktycznie niemożliwe...

  • Lubię! 2
Dnia 1.03.2024 o 21:21, DeadGeneratio napisał:

@dambo odejdę nieco od tematu autora, w automatyce klasyką raczej jest 4-20mA przy wykorzystaniu czujników, a z kolei nastawniki którymi sprawdzałem pętlę prądowe mają nawet 0-24mA. Po to aby mieć pewność, że taka przepustnica na sterowana pętlą prądową na pewno się zamknie bądź otworzy. Sygnały napięciowe są rzadkością, przynajmniej u mnie gdzie miałem od groma czujników do aplisensa, termopar czy przetworników ciśnienia od Siemensa. I do w pętli prądowej możliwe jest wykorzystanie protokołu HART jak pamiętam, dostęp do danych przetwornika jest znacząco ułatwiony z poziomu szafki rozdzielczej zamiast wspinać się kilkanaście metrów na kocioł 

No właśnie klasyką są sensory 0-10V, a że są wypierane przez 4-20mA to inna kwestia. Jeszcze też zależy od "gałęzi" automatyki - bo np w HVAC to sensory 0-10 królują nadal - co prawda od lat już jest tak, że moduły kontrolne do nich (takie PLC, ale bardziej typowo do tego zastosowania) jak już mają wejścia analogowe to wspierają jednocześnie to i to. Zaraz może przyjść ktoś z innej gałęzi i stwierdzić że "teraz to tylko cyfrowe i MODBUS to klasyka".

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...