Pomiar prądu i napięcia - Arduino + LCD OLED 0,96" + ACS712
Z pewnością można kupić tańszy miernik prądu i napięcia.
Ale co zrobić z modułami jak się omyłkowo kupi nie to co trzeba?
Trzeba jakoś je zagospodarować.
W tym projekcie można użyć Arduino uno/nano lub podobne, wyświetlacz OLED 0,96" sterowany po I2C - sterownik SSD1306 oraz moduł do pomiaru prądu z układem ACS712.
Ja posiadam moduł mierzący do 20A. Dostępne są również moduły mierzące do 5A lub do 30A. W przyszłości może stworzę jakąś prostą pcb na arduino nano i wyświetlacz.
Moduł z układem ACS do połączenia z arduino potrzebuje tylko 3 przewody.
Układ będę chciał zastosować w swoim zasilaczu warsztatowym. Na wyjściu mam napięcie od 0 do 24V oraz prąd do 6A. Z tego powodu do pomiaru napięcia będę musiał zastosować dzielnik godząc się z mniejszą rozdzielczością pomiaru. Wybrałem dzielnik 1/10. Teoretycznie będę mógł mierzyć do 50V przy rozdzielczości 0,05V. Dla moich zastosowań jest to zupełnie wystarczające.
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
analogReference(DEFAULT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // adres I2C mojego wyświetlacza
display.clearDisplay();}
float odczyt;
float odczyt1;void loop() {
float odczyt = 0;
odczyt= .049 * analogRead(A0) -25 ;// wejście A0 - pomiar prądu na podstawie napięcia na wyjsciu moduł ACS712
float odczyt1 = 0;
odczyt1 = (analogRead(A1) * 5 / 1023.0)*10 ;//wejście A1 pomiar napięcia, tutaj dla dzielnika 1/10
display.clearDisplay();// usatwienia lcd
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(20,0);
display.println("V=");
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(44,0);
display.println(odczyt1);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(20,18);
display.println("A=");
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(44,18);
display.println(odczyt);
delay(200);
display.display();
}
Szkic jest prosty i chyba nie wymaga obszernego komentowania.
Funkcję obliczającą pomiar prądu na podstawie napięcia z modułu ACS712 można obliczyć dla konkretnego modułu z linku poniżej.
http://www.communica.co.za/Content/Catalog/Documents/D4127258294.pdf
Mój moduł 20A konwertuje 1A na 100mV na wyjściu. Dla innych modułów dane można znaleźć w dokumentacji producenta.
W szkicu można zmienić sposób wyświetlania :
display.setTextColor(BLACK,WHITE);
wielkość czcionki:
display.setTextSize(2);
73 SQ7HJB - Marek
W plikowni wrzucimy biblioteki zastosowane w tym projekcie oraz szkic.