Skocz do zawartości

Arduino jako czujnik analogowy lub cyfrowy


mdadela

Pomocna odpowiedź

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 🙂

Link do komentarza
Share on other sites

@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 🙂 

Link do komentarza
Share on other sites

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

  • Lubię! 1
Link do komentarza
Share on other sites

(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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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 :-) 

Link do komentarza
Share on other sites

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).

Link do komentarza
Share on other sites

@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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

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".

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.