MCP3421

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
vavi
Biztosítékgyilkos
Hozzászólások: 72
Csatlakozott: 2006. április 29. szombat, 6:00

MCP3421

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

Sziasztok!

Nemrég szükségem lett volna egy saját készítésű műszerbe egy nem túl pontos árammérésre (10 mA felbontás 0-5 A-es tartományban). Mega644-es proci van a kütyüben, de nem jött össze. Egy 0,2 Ohm-os mérőellenálláson eső fesz.-t vezettem az egyik ADC lábra. Kb 250 mA-ig nem történt semmi, utána nagyjából pontos volt, de nekem az alsó tartomány is fontos lett volna. Próbáltam a többi ADC lábon is, az eredmény ugyanez volt.
Kíváncsiságból vettem a ChipCad-nél MCP3421-et (I2C ADC), gondoltam hátha ezzel jobb eredmény születik. Tegnap este bekötögettem próbaképpen a régi MegaBoard panelemre és tátva maradt a szám.

Adatlap: http://ww1.microchip.com/downloads/en/D ... 22003e.pdf

Itt a minta progi, amivel próbáltam:

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

                           '--- Alapadatok ---
$crystal = 14745600                                         'Sebesseg
$regfile = "M16def.dat"                                     'Chip
$baud = 9600


Config I2cdelay = 10                                        ' default slow mode:5
Config Sda = Portc.1
Config Scl = Portc.0


Dim Adat1 As Byte
Dim Adat2 As Byte
Dim Adat3 As Byte
Dim Adat4 As Byte

Dim Ertek1 As Long
Dim Ertek2 As Long
Dim Ertek3 As Long
Dim Ertek As Long

Dim Aram As Long



Do



 I2cinit
 I2cstart
 I2cwbyte &HD0
 'I2cwbyte &B10010000                                        '12bit
 'I2cwbyte &B10010100                                        '14bit
 'I2cwbyte &B10011000                                        '16bit
 I2cwbyte &B10011100                                        '18bit
 I2cstop



 I2cstart
 I2cwbyte &HD1
 I2crbyte Adat1 , Ack
 I2crbyte Adat2 , Ack
 I2crbyte Adat3 , Ack
 I2crbyte Adat4 , Nack
 I2cstop


Ertek1 = 65536 * Adat1
Ertek2 = 256 * Adat2

Ertek = Ertek1 + Ertek2
Ertek = Ertek + Adat3


Ertek = Ertek * 10
Aram = Ertek / 77                                           ' 0,1 Ohm-os mérőellenállás esetén
If Adat1 = 255 Then Aram = 0
Print "Áram: " ; Aram ; " mA"


Waitms 30

Loop
A chip-et 5V-ról járattam, a Vin+ csatlakozik a 0,1 Ohm-os mérőellenálláshoz, a Vin- pedig közveztlenül testre.
Jó pár próbamérést csináltam, már az 1 mA-t stabilan érzékeli, 3 A-es terhelésnél is mA pontosságú a mérés (Maxwell multival ellenőriztem).
Nagyon szimpatikus a darab, bár az 520 Ft+fa ár nem mondható alacsonynak, de most az eredmény a lényeg :)

Remélem tudtam segíteni valakinek!

Üdv.
Válasz küldése