Forum: Mikrocontroller und Digitale Elektronik Einstiegsversuch uC-Technik anhand einer Zählaufgabe


von AndreasP (Gast)


Lesenswert?

Hallo,

ich möchte meinen Gasverbrauch elektronisch am PC erfassen. Die Lösungen 
der einschlägigen Versender sind mir alle zu aufwendig.
Daher wollte ich die Gelegenheit nutzen zum einen meine verstaubten 
Elektronikkenntnisse und das 10 Jahre ruhende Programmiererwissen wieder 
zu reaktivieren und mich in die Welt der Mikrocontroller vorzuarbeiten.
Ich möchte eine Schaltung realisieren, die einen Impuls von einem 
Reedkontakt zählt und mir abfragbar mit 2-3 Befehlen (Abfrage, 
Zurücksetzen, StartwertSetzen) an einer seriellen (oder 
USB)-Schnittstelle für den PC zur Verfügung stellt.
Quasi möchte ich am PC einen Befehl über die Ser (oder USB) 
Schnittstelle schicken.
Somit würde ich etwas benötigen, das autonom läuft, einen digitalen 
Eingang besitzt, eine serielle Schnittstelle hat um kommunizieren zu 
können und mit möglichst wenig Strom auskommt.

Habe schon ein wenig hier geblättet und bin wie einige vor mir bei AVR 
und C-Programmierung gelandet. Was ich jetzt aber noch nicht geschnallt 
habe, ist was ich HW-mäßig brauche. Was für ein Board würde ich denn 
benötigen, so daß ich den µC programmieren und gleichzeitig testen kann 
? Würde ungern das ganze immer wieder umbauen.

Danke für Tips und Gruß,
A.

von Timmo H. (masterfx)


Lesenswert?

Du kannst dir entweder ein Board kaufen wo der Programmer mit drin ist, 
z.B. das AVR Board von Pollin für 15€ oder den Programmer (z.B. mkII) 
und ein Evaluationboard getrennt kaufen. Welche variante ist dir denn 
lieber? Billiger ist auf jeden Fall die erste.

von Hans M. (hansilein)


Lesenswert?

Das klingt nach Arduino, ist die Einfachste Lösung.
http://www.arduino.cc/

von Gast (Gast)


Lesenswert?

Das Hauptproblem dürfte der eigentliche Gasverbraussensor sein.

Hier

musssssss

ein zugelassener Sensor verwendet werden und dieser

musssssss

von einem zugelassenen Fachbetrieb eingebaut werden.

Die Elektronik und die Software sind einfach. Ich fange gerade mit AVR 
an und habe mich für erste Versuche für den AT90USBKEY entschieden; ist 
relativ teuer, hat aber eine USB-Schnittstelle zum Datenaustausch mit 
dem PC. Die Einfachversion für den Gaszähler wäre dann vielleicht der 
AT90USB82 oder AT90USB162; damit kann man auch anfangen; es gibt eine 
Laborplatine von OLIMEX für ca. 15 €.

Viel Erfolg

von Blackbird (Gast)


Lesenswert?

Naja, immer gleich USB.
Warum nicht ganz, ganz einfach für den Anfang?
Hier in die MSP430-Sektion schauen, auf Lochraster eine 
Minimalbeschaltung für einen einzigen Fototransistor/Fotodiode und einen 
RS232-Ausgang. Das ganze mit einer LiPo-Zelle versorgen.
Alle paar Tage die Daten auslesen.
Und in der Zwischenzeit was Besseres, Größeres planen, bauen, 
programmieren ...
Für den Sensor reicht ein Fototransistor/Fotodiode für die letzte Stelle 
- man muß ihn nur genau dort anbringen, wo sich pro Umdrehung nur einmal 
was ändert. Bei meinem Gaszähler sind dann 10 mal 0,001 m3 verbraucht 
worden.

Als Experimentierbord mit allen möglichen Ein- und Ausgangsbeschaltungen 
bietet sich auch eins der Bords vom Roboter-Netz an 
(http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=64&products_id=126).

Blackbird

von Gast (Gast)


Lesenswert?

Also das gebe ich zu, Fototransistor ist eine gute Idee.

Aber die Prozessortype ist doch egal, es geht auch mit einer C-Control-I 
M2-Unit, ggfs. sogar noch mit einer LCD-Anzeige zusätzlich sehr einfach 
und schnell, als USB-Schnittstelle wäre hier der IO-Warrior24 zu 
empfeheln.

Wenn es um einen unabhängigen Zähler geht, dann braucht er einen 
unabhängigen Sensor.

von Blackbird (Gast)


Lesenswert?

Da fällt mir noch was ein: Für das RN-Board brauchts noch einen 
Programmer. Parallelport-ISP-Programmer geht für den Anfang.

Aber es gibt noch eine bessere Lösung: AVR-Butterfly!
Für knapp 30,-EURO ist auch ein LCD schon drauf und Programmer brauchts 
auch keinen mehr (Serieller Bootloader)
Was man außer dem Board für die Gaszähl-Anwendung noch braucht:
1 3pol Stiftleiste für den seriellen Anschluß
1 2pol Stiftleiste für den AD-Eingang
1 3pol Buchsenleiste und
1 9pol Sub-D-Buchse und
ca 0,5m 3pol Kabel für den seriellen Anschluß
1 2pol. Buchsenleiste und
1 Fototransistor und
2pol Kabel für ein Sensorkabel
1 Widerstand ca. 47k auf dem Board von +3V nach AD-Eingang.

AVR-Studio gibt es umsonst. Die Software auf dem Butterfly wird zwar 
beim ersten Programmierversuch überschrieben, aber die kann man sich 
vorher sichern (alles vom AVR-Studio aus) und später wieder 
zurückschreiben oder man holt sich gleich eine verbesserte Version aus 
dem Netz.

Das LCD würde ich für die ersten Versuche noch nicht ansteuern, sondern 
die Daten über die serielle Schnittstelle auslesen.

Blackbird

von Matthias L. (matze88)


Lesenswert?

Ich glaube, das Problem des Zähler erkennens ist bereits durch den 
Reedkontakt gelöst, so wie ich die Fragestellung verstanden habe.

Als Controller eignet sich hier alles - dann sind wir allerdings bei ner 
seriellen und keiner USB Verbindung. Dafür dann einfach nen 
USB<->Seriell Adapter dran und fertig :-)

Das Projekt erscheint mir so als allererster Einstieg eventuell ein 
bisschen zu aufwändig, du wirst vermutlich noch einige Fehler machen und 
etwas länger dafür brauchen. Wenn das okay ist, dann würde ich ebenfalls 
das Pollinboard empfehlen. Hast halt leider kein Debugging on Board, 
aber sagen wirs mal so, ich bin bisher auch komplett ohne ausgekommen. 
(Muss man halt etwas mehr im Simulator spielen und ein paar mal mehr 
Flashen&testen, bis man weiß, wo genau jetzt der Fehler liegt).

Den Reedkontakt lesen sollte dann ganz einfach sein (Entprellung 
sinnvoll? -> Fertige Routinen hier in der Artikelsammlung oder in der 
Codesammlung. Ich empfehle die Version von Peter Danneger, da die 
nachweislich sehr gut funktioniert, ich benutz die auch immer...).

Ein kleines UART-Menü ist schon eeeeetwas schwieriger, aber immernoch 
recht simpel. Musst dir halt irgendwie überlegen, wie du das handhabst. 
Ist vermutlich am einfachsten, wenn du deine 3 Befehle als 1-Zeichen 
Befehle ohne Parameter auslegst, dann kannst du direkt mit ner 
switch()-Anweisung den jeweiligen Antwortcodeblock in einem Stück 
ausführen. Ansonsten müsstest du dir halt den Befehl merken, um das 
alles zusammenzusetzen (wenn du mehrere Bytes vom PC brauchst).

Eventuell vorher mal hier nach dem GCC Tutorial (ich gehe jetzt mal von 
AVR aus) viel rumprobieren, angefangen bei LED blinken lassen, dann ne 
UART Kommunikation aufbauen, dann mal das UART Menü implentieren und 
ohne PC testen (LEDs über Uart schalten?) und schwupps bist du fast bei 
deinem gewünschten Programm.

Bleiben noch Probleme offen:
-Was passiert bei Stromausfall?
-Brauchst du auch noch Zeitstempel, dass du z.B. deinen Gasverbrauch pro 
Tag am Monatsende übersichtlich sehen kannst?
-...

Alles sowas macht es dann kompliziert, deine oben geforderte 
Problemstellung hingegen ist für einen erfahrenen Programmierer in 
weniger als einer Stunde umzusetzen (inkl. flashen, testen, anschließen 
würd ich mal mutmaßen)

von Andreas P. (andreasp)


Lesenswert?

Hallöle,

vielen Dank für die vielen Rückmeldungen, das ist ja richtig lebendig 
hier.

Also die Sensoransteuerung ist simpel. Ich hab auch schon mit der 
optischen Lösung rumgemacht, ist aber sehr sehr störanfällig. Was ich 
bisher nicht wusste und letzte Woche rausgefunden hatte, war die 
Tatsache, das die meisten Gaszähler bereits einen Magnetgeber haben, der 
von außen abgegriffen weredn kann. Bei meinem ist vorne an der 
"Anzeigetafel" von unten eine Aussparung, da passt genau ein Reedkontakt 
von Reichelt rein und der gibt bei jeder 0,01m3 Stelle einen sauberen 
Impuls.

Das war auch der Auslöser, jetzt endlich mal den Hintern hoch zukriegen. 
:)
Programmierseitig traue ich mir das coden locker zu. Hab über 10 Jahre 
lang entwickelt auf Windows und Unix. Offen ist für mich die ganze 
Ansteuermimik des Prozessors, also wie gehts auf die Ports usw. Und vor 
allem, wie programmiere ich das Teil.
Habe mir jetzt bei Pollin mal das Evaluationsbord V2.01 bestellt für den 
Anfang. Wenn ich das richtig verstanden habe, kann ich damit 
programmieren und testen  mit, das sollte reichen.
Bin schon ganz gespannt, wann das Zeug ankommt.

von Alexander S. (esko) Benutzerseite


Lesenswert?

> das die meisten Gaszähler bereits einen Magnetgeber haben, der
> von außen abgegriffen weredn kann. Bei meinem ist vorne an der
> "Anzeigetafel" von unten eine Aussparung, da passt genau ein Reedkontakt
> von Reichelt rein.

Das ist natürlich ne super Sache.
Weißt du ob es beim Stromzähler was ähnliches gibt? Meine favorisierte 
Lösung ist mit einer Digicam jeden Tag ein Foto machen und dieses Per 
Funk zum PC senden, dann einmal im Monat die Zahlen abtippen.

von Andreas P. (andreasp)


Lesenswert?

Für Stromzähler gibt es von elv so eine optoelektronische Lösung, die 
erstaunlicherweise ganz gut funktioniert (Im Gegensatz zum Gaszähler).
Allerdings hab ich da von einem Magnetgeber jetzt noch nichts gehört.
Es soll aber mittlerweile bei einige EVU's die Möglichkeit geben, 
elektronische Zähler zu erhalten im Tausch.

von Skua C. (skua)


Lesenswert?

@Esko
Schonmal was von OCR gehört?

von Route_66 (Gast)


Lesenswert?

@skua

Der Esko hat zwar so ne OCR-Software - die ist aber in englisch und 
erkennt die deutschen Ziffern nicht so sicher ;-)

von Andreas P. (andreasp)


Lesenswert?

Hallo,

ich bin nun etwas weiter, brauche aber leider direkt mal Hilfe.
Habe mir das Pollin Evaluationsboard gekauft, zusammengelötet und 
Inbetrieb genommen.
Dazu hab ich die folgende Software installiert:
ponyprog
AVR Studio
WinAWR

Habe mich auf das erste winzige Assemblerbeispiel aus dem Tutorial 
gestürtzt. Ließ sich bilden und ich habe nun eine Hex-Datei (Die 
allerdings mit 10 Byte winzig ist).
Habe dann versucht, diese Datei mit dem Ponyprog auf den Controller zu 
bringen (Atmel 8-16). Hier scheitere ich dann.
Die Evaluationsplatine ist per seriellem Kabel mit Com1 verbunden. 
Spannung ist zugeführt, Netz liegt an und am Chip liegen auch 5 Volt. 
Ponyprog hab ich auf seriell Com1 egstellt und beim Klicken auf Probe 
kommt auch ein OK.
Beim Versuch es zu brennen, kommt ein Missing-Device Error.

Nun bin ich im Momemt etwas ratlos, woran das liegen kann.
Welche Schritte sollte ich sinnvollerweise testen ?

gruß,
A.

von Skua C. (skua)


Lesenswert?

Welche Ponyprog Version benutzt du?
Bei mir gehts mit
Version  2.07c Beta  Jan  6 2008

Es muss SI Prog I/O eingestellt sein.
Richtige Buchse am Board angeschlossen?

D1-D3 und Prozessor richtigherum?

von Skua C. (skua)


Lesenswert?

Ach ja!
Setup Calibration gemacht?

mfg

von Andreas P. (andreasp)


Lesenswert?

Funktionert (freu).

Des Rätsels Lösung ist die Version des PonyProg gewesen, hatte bei dem 
schnellen Download den ersten Link angeklickt und das ist die alte 
Version 1.117 oder sowas. hatte mich schon gewundert, warum die den 
Atmega8 nicht kannte aber jetzt funktionierts einwandfrei.
Sehr schön.

Dann probier ich jetzt mal ein wenig rum.
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.