Kiedyś robiłem podobny układ przekształcający napięcie wejściowe na inne napięcia wyjściowe aby zmodyfikować sygnał napięcia przepływomierza.
Nie wiem po co był ten stabilizator 7805 bo arduino nano ma już wbudowany taki stabilizator. A do wskaźnika już jest na płycie liczników stabilizator 10V.
Do trzeba by ze dwa rezystory 1k jako dzielnik napięcia aby zmienić napięcie 0-10V na zakres 0-5V jeśli arduino ma działać w sprzężeniu zwrotnym dobierając tak wypełnienie PWM aby utrzymać zadane napięcie na wskaźniku paliwa.
Tranzystor może być jakikolwiek 1Amperowy NPN albo N-Mosfet będzie pewnie aż zza dużym zapasem np TIP122.
Przekaźnik też mógłby być jakikolwiek tylko aby miał przełączane styki czyli miał styk 87A.
Nie wiem po co mu był ten duży rezystor może aby odciążyć tranzystor...
Chyba skonstruuje coś podobnego na płytce prototypowej bo pewnie niedługo będę musiał zrobić wskaźnik ciśnienie oleju na niestandardowym czujniku ciśnienia.
Przykładowy kod który miałem tylko uprościłem bez sprawdzania.
Kod: Zaznacz cały
byte mapa[256] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215
}; //mapa w którą wklepuje się jaka wartość ma mieć wskaznik benzyny dla danego pola tablicy które jest okreslane przez napiecie z czujnika lpg.
byte pwm=5;
long int lpg,benz;
void setup() {
pinMode(5, OUTPUT);
pinMode(1, INPUT); //wejscie LPG
pinMode(2, INPUT); //wejscie kontroli poziomu czujnika benzyny
}
// numer elementu w tablicy jest wybierany przez napięcie wejścia czujnika poziomu lpg a wartość elementu to napięcie do jakiego ma dążyć arduino na wyjściu dla wskaźnika benzyny
//oczyt wartość analogowych i zmiana ich na liczbę 8 bitową
lpg=map(analogRead(A1), 0, 1023, 0, 255);
benz=map(analogRead(A2), 0, 1023, 0, 255);
if(benz != mapa[lpg]){ //sprawdzenie czy sie roznia wartosci na wejsciu i wysjcu
if(benz > mapa[lpg]) //zwiększnie/zmniejszania PWM jeśli porządane napiecie jest za niskie/wysokie względem tego jakie jest z mapy możliwe że trzeba będzie zamienić pwm++ z pwm-- bo może działać odwrotnie
{
if(pwm<254) //ograniczenie dodawania pwm gdy dojdzie do limitu
{
pwm++;
}
}
else{
if(pwm>2) //ograniczenie odejmowania pwm gdy dojdzie do limitu
{
pwm--;
}
}
}
analogWrite(5, pwm);