Arduino 8. nodarbība – Voltmetrs

Arduino – Voltmetrs un sprieguma samazināšana ar rezistoriem

Šajā nodarbībā izgatavosim līdzstrāvas voltmetru (DC Voltmeter) un mērīsim spriegumu baterijās – noteiksim vai tās ir pilnas vai tukšas. Lai saudzētu Arduino, veiksim kontrolierī ienākošā sprieguma samazināšanu ar 2 rezistoriem.

Nepieciešamie komponenti

  1. Arduino kontrolieris (piem. Uno, Nano) ar USB kabeli
  2. Bredbords 400 punktu Half+
  3. Savienošanas vadi 10cm male-male 11 gab
  4. LED gaismas diodes 6 gab.
  5. Rezistori 330Ω 6 gab. (der jebkuri rezistori ar pretestību 200Ω-680Ω)
  6. Rezistori 4.7KΩ un 10KΩ (var lietot jebkurus, izmainīt izmēru kodā)

Skaidrojums

Arduino analogā ieeja nolasa spriegumu ar analogajām vērtībām no 0 (0V) līdz 1023 (5V). Spriegumu (Voltage) aprēķinām Analogo vērtību reizinot ar (5.0/1023.0).

Izmantojot 2 rezistorus (10K, 4.7K), veicam sprieguma samazināšanu ap 3 reizes.
Formula: Vout = Vin * (R2/(R1+R2))
Lai iegūtu pareizu spriegumu, kodā veiksim pretēju aprēķinu: Vin = Vout / (R2/(R1+R2))

Jaunu 1.5V (vai pilnu 1.2V lādējamo) bateriju (piem. AA, AAA, u.c.) spriegums ir 1.65V, bet tukšas tās ir pie sprieguma 1.2V-1.0V.
Spriegumu noteiksim ar 6 gab. LED. Pirmā rādīs spriegumu virs 1.6V, bet katra nākamā  par 0.1V zemāku spriegumu, līdz sestā LED rādīs spriegumu mazāku par 1.2V.

Slēgums

Uzmanību! Nepievienot spriegumu lielāku par 10V! Tikai līdzstrāvu!
Obligāti ievērot strāvas avota polaritāti! Neievērojot, Arduino var tikt sabojāts!

Programma

Kā pieslēgt Arduino un kā lietot Arduino IDE programmu skatiet 1.nodarbībā

Atveram Arduino IDE programmu.
Fails – Jauns
Iekopējam kodu, tad Fails – Saglabāt. Pārbaudīt, tad Augšupielādēt.

/*
Voltmetrs - DC Voltmeter 
*/

int analogInput = 0; //int - apaļš skaitlis, analogais pin A0
float vin = 0.0; //float - skaitlis ar dec.daļām. spriegums V
float vout = 0.0;
float R1 = 10000.0; //rezistors R1 (10K)
float R2 = 4700.0; //rezistors R2 (4.7K)
int value = 0; //nolasītā vērtība sākumā 0.
const int led2 = 2; //const int - nemainīgs apaļš skaitlis
const int led3 = 3;
const int led4 = 4;
const int led5 = 5;
const int led6 = 6;
const int led7 = 7;

void setup(){
   pinMode(analogInput, INPUT); //analogais pins sprieguma mērīšanai
   pinMode(led2, OUTPUT); //pini 2-7 kā izejošie uz LED
   pinMode(led3, OUTPUT);
   pinMode(led4, OUTPUT);
   pinMode(led5, OUTPUT);
   pinMode(led6, OUTPUT);
   pinMode(led7, OUTPUT);
   Serial.begin(9600); // sāk seriālo komunikāciju
}

void loop(){
   value = analogRead(analogInput); //nolasa vērtību
   vout = (value * 5.0) / 1024.0; //aprēķina spriegumu
   vin = vout / (R2/(R1+R2));

   if (vin<0.10) { 
   vin=0.0; // vērtību mazāku par 0.1V uz 0V 
   } 
      else { 
      Serial.print("Spriegums: "); //drukā seriālajā monitorā 
      Serial.println(vin); //ln - uz nākamo rindu 
   } 
   if (vin > 1.6) {
   digitalWrite(led2, HIGH); // ieslēdz
   delay(500); // gaida norādītās milisekundes
   digitalWrite(led2, LOW); // izslēdz
   }
   if (vin > 1.5 && vin < 1.6) { 
   digitalWrite(led3, HIGH); 
   delay(500); 
   digitalWrite(led3, LOW); 
   } 
   if (vin > 1.4 && vin < 1.5) { 
   digitalWrite(led4, HIGH); 
   delay(500); 
   digitalWrite(led4, LOW); 
   } if (vin > 1.3 && vin < 1.4) { 
   digitalWrite(led5, HIGH); 
   delay(500); 
   digitalWrite(led5, LOW); 
   } 
   if (vin > 1.2 && vin < 1.3) { 
   digitalWrite(led6, HIGH); 
   delay(500); 
   digitalWrite(led6, LOW); 
   } 
   if (vin > 0.9 && vin < 1.2) {
   digitalWrite(led7, HIGH);
   delay(500);
   digitalWrite(led7, LOW); 
   }
}

Ieslēdzam no izvēnes: Rīki – Seriālā porta monitors.
Tāpat varam vērot izmaiņas arī ar Seriālo ploteri: Rīki – Serial plotter.

Papildu uzdevums