Arduino Polska Forum
Czujnik prądu ACS714 -5A do +5A - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Czujnik prądu ACS714 -5A do +5A (/watek-czujnik-pr%C4%85du-acs714-5a-do-5a)



Czujnik prądu ACS714 -5A do +5A - frank996 - 13-04-2016

Witam 
Mam pytanie do Was. Jak napisać poprawnie odczyt wartości prądu z  Czujnika prądu ACS714 -5A do +5A w programie gdy Czułość dla zasilania  5V: 0,185 V/A ? 

(Czujnik wymaga napięcia zasilania z zakresu od 4,5 V do 5 V podłączonego do wyprowadzeń oznaczonych jako VCC (+) i GND (masa). Wyjściem jest sygnał napięciowy proporcjonalny do natężenia mierzonego prądu. Kiedy napięcie VCC jest równe 5 V, wyjście wycentrowane jest na połowę, czyli 2,5 V. Wartość wyjściowa rośnie o 185 mV na 1 A gdy natężenie mierzonego prądu jest dodatnie, w przeciwnym wypadku maleje.) Ja zasilam 5V z arduino


RE: Czujnik prądu ACS714 -5A do +5A - JasQ - 13-04-2016

Zrób jak poniżej

Kod:
float prad = 0;      

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

void loop() {
  
int sensorP = analogRead(A0);

prad = map(sensorP, 0, 1023, -5, 5);
  
  Serial.print(analogRead(A0));
  Serial.print("  Prad = " );
  Serial.println(sensorP);
  
}



RE: Czujnik prądu ACS714 -5A do +5A - frank996 - 14-04-2016

Zrobiłem jak napisałeś i wyniki zastanawiające :
469  Prad = 520
471  Prad = 518
472  Prad = 520
470  Prad = 519
473  Prad = 517 itd.  a prąd w układzie gdzieś ok  0.2A

jak dołożyłem linijkę do tego programu Serial.println(prad); to wynik "0" .
Dodam jeszcze , że dołożyłem zera po przecinku przy funkcji map .


RE: Czujnik prądu ACS714 -5A do +5A - JasQ - 14-04-2016

Ech zaplątałem się troszkę , nie można przy mapowaniu uzyskać zmiennej float trzeba to troszkę skomplikować . Poniżej masz kod i podaje poprawnie dane .

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

void loop() {
  
int sensorP = analogRead(A0);

float x = map(sensorP, 0, 1023, -500, 500);

float prad =  x / 100 ;
  
  Serial.print(analogRead(A0));
  Serial.print("  Prad = " );
  Serial.println(prad);
  
}