Feszmérő projekt...

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
bigmaci5
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2014. december 11. csütörtök, 8:36

Feszmérő projekt...

Hozzászólás Szerző: bigmaci5 »

Sziasztok! Egy kis segítséget szeretnék kérni az ismert poti tekergetős, analog láb olvasós progit, hogy tudnám négy digitessé tenni?
Magyarul 0-5V lcd multiméter ezred volt kijelzéssel.

A segítséget előre is köszönöm.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Visszabeszélő....

Hozzászólás Szerző: Robert »

Eddig mire jutottál? Mi a mintaprogramod? Vázlatod/elképzelésed?


Segítség :

Kód: Egész kijelölése

Analog jel * maxfesz/Aref = mért valós fesz.
bigmaci5
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2014. december 11. csütörtök, 8:36

Re: Feszmérő projekt...

Hozzászólás Szerző: bigmaci5 »

Bocsánat most látom, hogy létrehoztál nekem egy új topicot akkor bemásolom ide a válasz és onnan töröld. Köszönöm.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Feszmérő projekt...

Hozzászólás Szerző: Robert »

Áthelyezve...(admin)

Kód: Egész kijelölése

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 20 chars and 4 line display

unsigned int voltage = 0;
float j = 0;

void setup()
{
  lcd.init(); // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
}
void loop() {
  j = analogRead(A0);
  voltage = j*5000/1023.0;
  
 lcd.print(voltage);
 lcd.print("V");
 lcd.setCursor(0,0);

delay(500);
}

Ez 4 digitet jelenít meg sajnos tizedespont nélkül.

Kód: Egész kijelölése

#include <Wire.h>

long readVcc() {
  // Read 1.1V reference against AVcc
  // set the reference to Vcc and the measurement to the internal 1.1V reference
  #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
    ADMUX = _BV(MUX5) | _BV(MUX0);
  #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
    ADMUX = _BV(MUX3) | _BV(MUX2);
  #else
    ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  #endif  
 
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Start conversion
  while (bit_is_set(ADCSRA,ADSC)); // measuring
 
  uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH 
  uint8_t high = ADCH; // unlocks both
 
  long result = (high<<8) | low;
 
  result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
  return result; // Vcc in millivolts
 
}
void setup() {
  Serial.begin(9600);
}

void loop() {
  
  unsigned int ADCValue;
  double Voltage;
  double Vcc;
  Vcc = readVcc()/1000.0;
  ADCValue = analogRead(A0);
  Voltage = (ADCValue / 1023.0) * Vcc;


  Serial.println( Voltage );
  delay(1000);
}

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Feszmérő projekt...

Hozzászólás Szerző: kapu48 »

Szerintem Arduino esetén elégedj meg a század V-os pontossággal!
Ez ennél többre nem képes!

A belső 1.1V referencia alkalmazása miatt, még szükséges lesz az AVC bemeneten leosztani a mérendő 0-5V–ot, 0-1.1V-re. Ez is + jónagy hibaszázalékot fog bevinni a rendszerbe!

Vagy kiépítesz külső 5V referencia feszültség illesztést. Ennek viszont legalább tízezred V pontosságúnak kellene lennie! És alaposan szűrni, mindenféle zajoktól! ?
:?
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Feszmérő projekt...

Hozzászólás Szerző: csabeszq »

Maradjunk annyiban, hogy az Arduino feszültségmérésre alkalmatlan. Már a dokumentációból olvasva is.
Az ADC bemeneti ellenállása úgy 10k körül van. Ha feszültséget mérsz, akkor simán elviszed vele a mérendő áramkört.

Előerősítő kell hozzá és stabil referencia.

MCP6024 - erősítő 10 G-ohm bemeneti ellenállással, lineáris, 10 MHz átvitellel, rail-to-rail azaz a 0-5V tartományban mindenhol képes erősíteni (bizonyos erősítőknél, pl. LM324 3.5 V felett már nem tud erősíteni a PNP tranzisztorok miatt)

Ennek ellenére én más erősítőt használtam, SPI-n keresztül állítható erősségű erősítőt:
MCP6S26 - SPI-n programozható erősítő, beállítható erősítéssel

MCP1541 - ez stabil referenciát csinál 4.096V-ra.

Nekem kizárólag ezekkel az eszközökkel sikerült stabilan 0.01V pontosságot mérni a 0-5V tartományban.
bigmaci5
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2014. december 11. csütörtök, 8:36

Re: Feszmérő projekt...

Hozzászólás Szerző: bigmaci5 »

Uraim, köszönöm a válaszokat, jövök mindenkinek egy sörrel. Egyébként egy kósza ötlet lett volna, tovább gondolva huncutszemű barátaink alkatrész teszterét, nekem MOSFET nyitófesz.-re válogatáshoz kellett volna.
Válasz küldése