Ett lågprissystem för mätdatainsamling

Om man kombinerar ett datorkort med högupplösande A/D- och D/A-omvandlare med ett dator och ett grafiskt användargränssnitt får man ett mätsystem. Zacharias Brandt, Z Electronics, gjorde både det och en hel del därtill. Här beskriver han sitt system, ZPro2560.

 

Det här är ett utvecklingsprojektet som sträcker sig över ganska lång tid. Alltsammans började med att jag behövde olika funktioner i olika projekt, med lite olika innehåll varje gång. Till slut tog jag ett samlat grepp för att se vad som behövdes i merparten av all utvecklings-, forsknings-, och utbildningssituation.

Systemet består av ett kort med ett stort antal funktioner, drivrutiner och ett Windows-program. Med detta system kan du direkt börja mäta utan att behöva skriva en enda kodrad eller ta fram nya kort.

Flexibelt
I början av ett projekt behöver man ofta göra vissa grundläggande mätningar för att verifiera systemkoncept, storheter, felmarginaler, antagande etc. Allt som oftast börjar man med att konstruera ett eller flera mätkort som skall göra de initiala mätningarna vilka sedan leder till att projektet startas på allvar för att utmynna i en färdig produkt.

Denna startfas blir ofta både dyr och tidsödande eftersom nya kort skall tas fram för att göra mätningarna. Program skall utvecklas, debuggas och kortet skall verifieras innan de mätningar kan göras, som behövs för projektets start. Med ZPro2560 behövs inte längre all denna förutveckling.

Samma sak gäller forskning och labbverksamhet. Här behöver man ofta göra mätningar utan behöva köpa in eller utveckla dyra mätsystem. Att köpa in ett processorlabbkort gör att hela analogdelen, samplingen och mätdatahanteringen är kvar att göra.

Med ZPro2560 kan man direkt börja med att mäta utan att behöva skriva en enda kodrad. Du kan även köra kortet off-line dvs, du startar upp det och genom batteridrift kan det lämnas obevakat och samplar alla de data du behöver. Du kommer tillbaka långt senare och hämtar dina data.

Att ZPro2560 dessutom är ett utmärkt sätt att lära sig hantera en embeddedprocessor i en avancerad miljö, är bara ett plus.


Systemarkitektur, klicka här för större bild

Atmelprocessor och USB
ZPro2560-kortet är baserat på en Atmel Mega2560 som spinner runt på 10 MHz. Dessutom finns här en extern klockkrets för 32kHz avsedd för realtidstiming.

För extern kommunikation finns dels en USB-krets kopplad till en  UART-port, denna kopplas direkt till en PC, eller via en Bluetooth-sändare om man vill fjärrstyra kortet.

Vidare finns en USB-port med programmerbar styrkrets (VNCL2 där det finns färdiga applikationer att ladda ned gratis. Denna port kan användas till att lagra data på ett USB-minne om max 4GB, eller till seriekommunikation av olika slag.

Kortet innehåller ett optoisolerat UART-styrt gränssnitt mot RS485, med två kontaktdon på kortet så att ett nät kan byggas. Kortet stödjer upp till totalt 15 enheter. På kortet finns en encoder med vilken man kan ställa kortets adress.

Analoga kanaler
För mätdatainsamling finns dels fem kanaler via Mega2560s interna ADC (10 bit) för de applikationer som inte behöver högre upplösning, men kanske en snabbare insamling. Dessa kanaler har inbyggda förstärkare på kortet där motstånd och LP-filter kan bestämmas från fall till fall genom inlödning på kortet av passiva komponenter. Referensspänningen till denna ADC är den interna 5 V-spänning som finns på kortet och matar processorn, men även internt genererad 2,54 V respektive 1,1 V-spänning kan användas.

För precisionsmätningar finns en 8 kanalig 24-bits ADC, LTC2445. Denna har en extern 5 V-referens (LTC6652) för maximal precision. Denna ADC har kanal 6 och 7 försedd med på kortet befintliga operationsförstärkare som möjliggör antingen differentiell signal och mätning, eller mätning i single mode. Som förstärkare används LTC2057. Passiva komponenter kan väljas för att passa respektive tillämpning.

Övriga kanaler ansluts till ett externt förstärkarkort med differentiell design och där man kan välja (med SO8-kapsel) den förstärkare som passar applikationen. Dessa är dubbla operationsförstärkare. 6 kanaler drivs differentiellt medan 2 kanaler binds samman till en kanal via en summeringsoperationsförstärkare.

Digitala portar och accelerometer
Det finns ett stort antal lediga digital portar och dessa kan ställas valfritt IN eller UT. Det finns också två isolerade inportar och två isolerade utportar.

Vidare finns isolerad A/C-styrning via en triac med ZVS. Denna triac är inte monterad, eftersom behoven kan variera. Det finns dock plats för en triac med TO220-kåpa och på kortet finns plats för en säkring som inte bör överstiga behovet. Triggningen sker med ZVS vilket ger minimalt med störningar. Triacen är avsedd att vara antingen PÅ eller AV, inte fasvinkelstyrd.

För vibrationsmätningar eller andra behov där accelerationen behöver mätas finns en 3-axlig accelerometer på kortet. Mätområdet är  +/- 3g.

Drivrutiner och WinApp
Kortet har drivrutiner för alla på kortet befintliga enheter. Dessa används normalt av den tillhandahållna WinAppen.
För egen utveckling finns en Bootloader-funktion som gör att egna drivrutiner/applikationer kan laddas ner utan att man behöver en emulator. Man kan också utveckla egna WinApps som nyttjar befintliga drivrutiner. Dessa finns beskrivna i medföljande dokumentation.


WinApp, klicka här för större bild

ZPro2560 WinApp är en windowsapplikation som används för att styra de funktioner som finns på kortet. Den är skriven i VB2010 .NET. Normalt sett används kortet med hjälp av inbyggda drivrutiner och medföljande WinApp.

Temperaturmätning
Låt oss ta ett första exempel där vi mäter temperatur med hög noggrannhet. Linjär mätning med direktvisning sker som följer:

* trimma den inbyggda Strömgeneratorn till 1mA med så hög noggrannhet som behövs.
* anslut ett PT100- eller PT1000-motstånd mellan strömgeneratorns ena utgång och GND på kortet. Motståndet kan befinna sig långt bort från kortet.
* anslut den punkt på sensorn som är mot strömgeneratorn till J22. pin1 och den andra punkten på sensorn till J22 pin 2. Då är den kopplad till kanal 6 resp 7 på kortets 24-bits ADC och då denna läses differentiellt via WinApp kan man direkt avläsa det digitala värdet och spara det på en fil i datorn (genom att starta Cont-funktionen). Då loggas data med det intervall man angivit. Data kan sedan direkt importeras till Excel och bearbetas.


Temperaturmätning, klicka här för större bild

Genom att påverka såväl DAC som Digital I/O under en mätning kan flera olika scenarier simuleras. T ex starta en fläkt som påverkar temperaturen, öka värmen genom att slå på ett A/C kopplat värmeelement m m.

Bryggmätning
Vid mätning med brygga matas bryggan via den interna Vref på 5V (buffrad via en operationsförstärkare) via J18 pin 5 (+) och GND (J18 pin 10). Respektive utgång från bryggan kopplas antingen via den interna bryggförstärkaren (J22 pin 1 resp 2) eller så används det externa opampkortet. Data kan sedan hämtas och loggas enligt exempel 1.


Bryggmätning

Bryggmätning är att föredra vid användning av olinjära sensorer som NTC, PTC etc. Då kam man i bryggan plocka bort eventuell offset och utvinna en ren mätsignal.

Observera att samtliga kanaler som är tillgängliga på med 10-bits ADC respektive 24-bits ADC kan köras parallellt och loggas enligt uppsatta tidskriterier. Data loggas på fil och tas in direkt i Excel.

24-bitsomvandlaren LTC2445 har egentligen tillgång till 28 bits upplösning som, med lite medelvärdesbildning, kan användas. Detta under förutsättning att bruset i signalen är tillräckligt lågt. Det i sin tur bestäms av vilken operationsförstärkare och signalkälla man har använt. T ex har en operationsförstärkare som LT1028 ett så lågt brus att med sensorimpedanser runt 50 ohm, kan man dra full nytta av hela 28-bitsomfånget.

Nätverk
För att kunna bygga ett distribuerat mätsystem finns ett isolerat RS485-nät. Via detta nät kan man nå alla övriga enheter via den ID-omkopplare som finns på kortet och ger kortet dess nr. Genom att det är en hexadecimal enkoder kan kortet ges en valfri adress inom 1-15, adress 0 är adressen för systemets master. Genom att använda master/slave-metoden behövs ingen avancerad kollisionsdetektering. Kort med adress 0 är alltid master.

 

En separat applikation kommer att finnas där alla ADC-funktioner kan nås från masterkortet och sparas centralt via Master till PCn.
Kortet har ingång för 7,5 VDC och likaså en utgång så att flera kort kan försörjas från en central enhet genom att bara använda kabelkoppling.

 

Stand-alonemätning
En av finesserna med ZPro2560 är att man via WinAppen kan definiera en mätning att ske stand-alone. Först sätter man datum och tid på kortet som då automatiskt synkas mot PCn. Sedan definieras de kanaler som skall samplas och med vilket intervall. Därefter startas applikationen på kortet och PCn kan kopplas ur.

Med ett tillräckligt stort batteri, kan kortet stå ute i busken under lång tid och mäta ett antal variabler. Dessa lagras, tidsstämplade, på det anslutna USB-minnet. Med 4 Gbyte minne tillgängligt täcks de allra flesta mätbehov. Skulle spänningsmatningen sluta fungera gör inte det något, eftersom datafilerna på USB-minnet öppnas och stängs vid varje datalagring. De står således inte öppna under hela mättiden.

För att skydda systemet finns spänningsövervakning som indikerar när batteriet når kritiskt låg nivå och då stänger systemet av sig självt. Därmed går inga data förlorade.

 

När man önskar avbryta datainsamlingen, kopplar man in PCn och startar WinAppen. Man kopplar upp mot kortet och trycker på ”Stop Local”. Därvid stoppas samplingen och USB-minnet kan tas ur.

Möjlighet finns att göra detta via en USB-kopplad Bluetooth-sändare på den USB-kanal som normalt går till PCn. Då kan kortet fjärrstyras.

Utvecklingsmiljö
En gratis utvecklingsmiljö för mätkortet är Atmel Studio 6, som innehåller C-kompilator, debugger m m. Det enda som behövs köpas är en JTAG_ICE (t ex JTAG ICE 3 som likaså har ett lågt pris).
Data om ZPro2560 finns på www.zelec.se.

Zacharias Brandt, Z Electronics

Comments are closed.