PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensorwerte speichern und auslesen



Barracuda_cy
10.01.2008, 00:36
Hi there

Bin neu hier also seid pls nett zu mir:p
also, als erstes möcht ich was loswerden: ich finde es schade das das Anmeldeformular bei der Mensch oder Roboterfrage "Cyborg" nicht akzeptiert^^

aber nun ernst:
Ich habe in der Schule seit 3 Jahren programmieren, das standertzeugs halt wie textverarbeitungen und Adressverwaltungen und so zeugss (Delphi)

eine Zeit lang hatte ich auch C++ (und ich denke, dass mir das für mein neuestes Projekt helfen wird)

Und auf meinem Ti 83+ programmiere ich ausführlich TI-Basic

Ach ja: Basic hab ich auch ma gemacht

und Pascal (wobei das ja ähnlich ist wie Delphi!)

Ich möchte gerne für das Rennmofa ein Sensornetz aufbauen
es soll das messen:

Umdrehungszahl
Gasgriffstellung
Abgastemperatur (eventuell)
Geschwindigkeit

Alle diese Parameter sollen während der Fahrt aufgezeichnet werden (aber nicht angezeigt, also ist kein Display oder ähnliches nötig!) aber nach der Fahrt sollen sie z.B. mit einem Notebook ausgelesen werden.
Die Desktopsoftware werd ich wohl in Delphi sachreiben.

Nun fragt ihr euch sicherlich wieso ich soviel für nichts schreibe und was genau meine Frage ist.

Nun: ich habe keine Ahnung von Mikroprozessoren und so... (weis aber das man für die Programmierung ASM und C braucht)
Könnt ihr mir sagen wie (also mit welchen sensoren, Programmiersprache usw.) das Projekt realisierbar wird.
Ach ja: ICh habe zugang zu jemandem der mal auf nem Zlog80 ASM programmiert hat.

Als CPU dachte ich an einen Atmel AVR mit 150 Mhz, zu wenig? Gibt es bessere?

Danke im Voraus

Greez

Steinigtmich
10.01.2008, 01:46
150MHz??

Soll das Mofa unterwegs noch Bilderkennung machen?

Nimm am Besten einen normalen AVR Microcontroller (z.B. ATmega32) und arbeite Dich da bitte in die Grundlagen ein. Die Programmiersprache ist recht variabel, Basic, Pascal, Assembler und C sind die Regel.
Mach dann damit am Besten das Übliche für Anfänger. z.B. wie flashe ich das Biest, wie bring ich eine dran angeschlossene LED zum blinken, wie lese ich Tastendrücke aus usw.

Dann überlege, was Du an Sensoren brauchst. Beachte dabei auch die Betriebsparameter. Für Abgastemperatur lässt sich nicht jeder Temperatursensor benutzen.
Für den Gasgriff bräuchte es sicherlich einen Absolut-Drehgeber, denn sonst lässt sich nicht ohne weiteres feststellen, wann das Ding am Anschlag ist, sondern nur wie weit er gedreht wurde. Auch die Befestigung stelle ich mir da am Lenker relativ problematisch vor.
Was die Geschwindigkeitsmessung anbelangt, überlege auch dort was am besten funzen würde, vielleicht nen Impulsgeber von nem Fahrradtacho.
Der Part ist wahrscheinlich der problemloseste.
Und genau damit solltest Du dann anfangen und dich danach an die schwieriegen Parts heranarbeiten.

Barracuda_cy
10.01.2008, 08:02
Nun, ich liess mich von den Taktraten von Desktop-Pc's verwirren und verunsichern;) (auch wenn ich weiss das 150Mhz bei einem EFFIZIENTEN Programmcode rel. Viel sein können)

gut, kann man auch z.B. Pascal und Basic kombinieren? (soweit ich weiss kann man ja auch c und ASM kombinieren?!)

gut, werde wohl meine Zeit dafür brauchen, kennst du irgendwelche brauchbaren Tutorials für diese CPU?

Nun, das ist klar...;)
Gut, thx, werde ich so machen!;)

Enrock
10.01.2008, 08:09
Servus,

da hast du dir aber ein ganz schön großes Projekt für den Anfang ausgedacht.
Ich kann meinem Vorredner nur recht geben, versuch es erstmal mit den Basis-Sachen, damit du ein Gefühl für den Mikrocontroller entwickelst. Besorg dir erstmal ein Demoboard und mach dich dann dran kleinere Aufgaben zu realisieren und dich Stück für Stück vor zu arbeiten.


Als Kontroller kann ich dir nur einen PIC empfehlen, aber das ist Geschmackssache. Mach zumindest mal das ein oder andere in Assembler! Damit lernt man den internen Aufbau des Kontrollers meiner Meinung auch am Besten kennen!
In diesem Sinne.

Viel Erfolg

Barracuda_cy
10.01.2008, 08:33
Gut danke, werd ich beherzigen!
Ne andere Frage, wie is das mim "Flashen".
Muss ich da extra http://www.myavr.de/download/techb_mysmartusb.pdf so ein Teil kaufen? Und wie häng ich da dann die CPU an?

Also mit Experimentierboard meinst du so eines Einfach mid ner CPU und n'paar leuchtdioden auf ner Platine und dann diese zum Blinken bringen usw?

Danke;)

pongi
10.01.2008, 09:35
Geh mal auf www.mikrocontroller.net. Da gibts Basic-Tutorials für ASM, Bauanleitung für Testplatine, und ISP-Adapter für den LPT-Port, und weiterführend auch einen super AVR-GCC Tutorial.

Das ganze ist zwar für einen Atmega8, aber für den Anfang wirds reichen, mit dem kann man ja auch einige Temp-Sensoren, Drehgeber usw. auslesen. Später kann man eh auf eine größere Variante umsteigen.

Das Problem bei dieser Aufgabe sehe ich nicht bei der Taktrate, da Drehgeber und Temperatursensoren auch mit 1Mhz eingelesen und verarbeitet werden können, da sie im Vergleich zum Prozessor ziemlich lahm sind (ist aber von der Menge der Sensoren abhängig, aber mehr als 16MHz wirst da sicher nicht brauchen). Du wirst eher mit dem Speicher Probleme bekommen, denn die Dinger haben davon nicht besonders viel (1K SRAM, 8K Flash). Abhilfe kann man mit einer angehängten SD-Karte schaffen, das ist aber dann nicht mehr trivial, und dazu benötigt man meines Wissens nach mindestens einen Atmega32.

Noch zu bedenken ist die Stromversorgung, an einem MoFa sind massig Störungen vorhanden, die sowohl den Prozessor selber, als auch die (hauptsächlich analogen) Messergebnisse beträchtlich beeinflussen können.

MfG

pongi

wkrug
10.01.2008, 10:10
Mit nem ATMEL AVR ist die Aufgabe auf jeden Fall auch zu lösen.
150MHz Taktfrequenz ist allerdings Quatsch.
Die ATMEL AVR Reihe arbeitet mit einer RISC Architektur und führt die meisten Kommandos mit nur einem Prozessortakt aus.
Wenn Du nicht gerade Hoch Mathematische Berechnungen vorhast und auch keine Portreaktionen im µs Bereich willst, reichen bereits 2MHz für so eine Anwendung aus.
Ich verwende gerne 8MHz, weil damit auch die L Varianten der AVR ( niedrigere Versorgungsspannung ) noch funktionieren.
Was Du eigentlich willst ist ein Datenlogger.
Das Problem aller dieser kleinen Controller ist der begrenzte Speicherplatz für so eine Logger Aufgabe.
Du solltest Dir also schon mal Überlegen wo die Daten abgespeichert werden sollen. Ich würde ein I²C EEPROM empfehlen, oder eine SD - Speicherkarte - auch wenn die schwieriger anzusteuern ist.
Die meisten AVR haben einen USART = serielle Schnittstelle, an Bord.
Wenn Du einen USB Schnittstelentreiber z.B. einen FT232RL einbaust, hast Du auch gleich eine passende ( USB ) Schnittstelle zu deinem Laptop.

Üblicherweise kann eine Programmiersprache nur mit Assembler gekoppelt werden. Also "C" und Assembler geht, Basic und Assembler geht auch, "C" und Basic geht nicht.
Meine Empfehlung ist sich in die Grundlagen von Assembler bei dem entsprechenden Microcontroller einzuarbeiten, weil man dabei am meisten über die Hardware lernt. Und dann auf eine Hochsprache umzusteigen.

Die AVR Controller sind fast alle In System Programmable. Das heisst die Chips können in der Zielschaltung geproggt werden ohne den Chip auszubauen, wenn man eine entsprechende Buchse vorsieht. Die ISP Programmer sind meistens einfach aufgebaut und schon ab ca 10,-€ im Handel fertig erhältlich.

Es gibt aber auch eine ganze Menge Schaltungsvorschläge im Internet dafür zu finden.
Den einfachsten den ich bis jetzt gefunden habe ist ein Druckerportstecker mit 2 Widerständen und ein paar Drahtbrücken.
Allerdings ist bei dieser Lösung der Druckerport des PC in keinster Weise geschützt.

Aber wie meine Vorposter schon geschrieben haben - Erstmal langsam anfangen und mal LED's zum blinken bringen, sich schön langsam mal über eine Tasterabfrage zu den integrierten A/D Wandlern vorarbeiten und dann erst mit der Komunikation mit peripheren Bausteinen weitermachen.
Dann hat dein Projekt auch Aussicht auf Erfolg.

Barracuda_cy
10.01.2008, 18:35
@pongi
Danke für den Link!
Noch zum thema Stromstörungen:
Da das ganze ein Rennmofa ist ist eine veränderte Lichtspule drinne, aslo hab ich gar keine Stromleitung für andere Verbraucher -> Batteriepack! (is aber kein Problem)

was heisst trivial? ](*,)

Gut, dann halt weniger Mhz (besser wie mehr, oder;))
was wäre der Vorteil eines EEPROM's? (das sind die EPROMS die elektronisch gespeichert und gelöscht werden, oder?)
hab das mit dem Schnittstellentreiber nich ganz kapiert, wie muss ich mir dann das Vorstellen auf der fertigen Platine?
Hab ich da dann die Leitungen für die Sensoren, denn Prozessor, speicher und noch ein Bauteil für die Schnittstelle?
Wär natürlich am G**en wenn cih gerade das Laptop anhängen könnte, wie du das gerade geschildert hast!;)

Noch zum thema vom Ungeschützten Druckerport: Sowas gibts leider an meinem neuen (zwar superg**en;)) PC nich mehr.

Gut, werd ich so machen!
(hab eh auch noch ne verwendung für blinkende LED's;))

ach noch ne Frage zu EEPROMS

sind die Flüchtig?? (also verlieren sie die Daten wenn sie keinen Strom bekommen?

Greez

pongi
10.01.2008, 20:33
EEPROMs sind nicht flüchtig. Dafür aber langsam.

wkrug
10.01.2008, 23:04
EEPROMs sind nicht flüchtig. Dafür aber langsam.
Das stimmt so, aber für die paar Datensätze pro Sekunde, die so ein Logging System ausspuckt ist es mehr als schnell genug.
Da er nicht flüchtig ist kann man das System ohne Probleme stromlos machen, den Controllerteil abstecken und die Daten in der warmen Stube am heimischen PC auslesen.

Zum Thema SD Speicherkarten:
Um diese SD Karten auch vernünftig ausnutzen zu können, muss der Controller eine Art kleines DOS mit drin haben und das geht erst ab nem ATMEGA32, soweit ich weiß.

Hab ich da dann die Leitungen für die Sensoren, denn Prozessor, speicher und noch ein Bauteil für die Schnittstelle?
Sicher auch noch ein paar passive Bauteile wie Widerstände und Kondensatoren, sowie mit ziemlicher Sicherheit einen Operationsverstärker.
Das Protokoll für die serielle Schnittstelle kann dein Controller selber erzeugen z.B. 38400 Bit/s, 8 Datenbits, 1Stoppbit, keine Parität.
Der USART ( = serielle Schnittstelle ) auf dem Controller wird durch ein paar Register eingestellt und die gewünschten Daten Byteweise nacheinander in ein Register geschrieben.
Die Wandlung in das gewünschte serielle Format macht dann der Controller von alleine.
Die Daten kommen dann am Pin TxD seriell raus.
Allerdings hat dieser Datenstrom Pegel mit 0 - 5V und damit kann die serielle Schnittstelle eines PC's schon mal nichts anfangen.
Der übliche Weg ist, diesem Datenstrom einen Pegelwandler wie den MAX232 nachzuschalten der dann + / - 12V Signale aus den 0 / 5V macht - und damit kann die serielle Schnittstelle des PC was anfangen.
Da aber moderne Laptops u.U. keine serielle Schnittstelle mehr haben, wohl aber einen USB Anschluß, müsste man einen USB -> Seriell Wandler an das Laptop anschließen.
Hier kommt nun des FT232RL Chip ins Spiel.
Er kommt auf der Seite zum Microcontroller mit 0 / 5V Pegeln zurecht und stellt in Richtung PC eine vollwertige USB Schnittstelle bereit.
Da man auf der Controller Seite sowieso einen Chip benötigt hätte ist diese Lösung im Endeffekt sogar preiswerter als die Lösung mit MAX 232 und USB - Seriell Wandler.
Wenn Du ein EEPROM benutzen willst wird Dir ohnehin kein anderer Weg bleiben, als diesen Speicherchip über die serielle Schnittstelle auszulesen.


Sowas gibts leider an meinem neuen (zwar superg**en;)) PC nich mehr.
Dann wäre ein AVR ISP MK II von Atmel, oder ein Nachbau davon für Dich geeignet. Das Teil hat eine USB Schnittstelle zum programmieren, geht sauschnell, kostet aber auch ein paar Euros mehr. Aber das ist ja Pipifax im Vergleich zu einem neuen PC ;-) .

Als Auswerteprogramm wäre eventuell Logview http://www.logview.info geeignet.
Die Jungs basteln da an einem Datenformat rum, das sich Open Format nennt. Wenn man sich bei den ausgegebenen seriellen Daten an bestimmte Konventionen hält und eine kleine .ini Datei umschreibt kann man damit Super Auswertungen fahren.
Das Open Format ist aber auch so angelegt, das man auch mit EXCEL und ein paar Mausklicks schöne Grafiken produzieren kann.
Ebenfalls auf der Logview Seite wird ein Mini Datenlogger vorgestellt, der auch die meisten von Dir geforderten Anforderungen erfüllt.
Der größere Bruder der MiDi Datenlogger ist für Deine Anwendung schon Oversized.
Ich persönlich hätte aber da anstatt des ATTINY 26 lieber einen ATMEGA 8 verwendet.

Aber trotzdem mal alles schön langsam angehen.
Du kaufst Dir ja auch nicht nur neue Wanderschuhe und willst dann sofort das Matterhorn besteigen.

Ich bastel zur Zeit an einem Funk Telemetriesystem rum, das die Daten dann mit Logview auswertet. Mit der neuen 2.0 BETA 2 von Logview läuft das Spielchen schon sehr schön.

Barracuda_cy
10.01.2008, 23:46
oh mann, ihr schreibt immer so vielXD
(aber bin euch sehr dankbar!)

Gut, das ist ziemlich wichtig wenn er auch ohne Strom kann!

Gut, ich denke aber das der Speicher eines EEPROMS ausreichen wird?

Klar kommen da noch Widerstände etc. hab ich ma weggelassen;)
Nun..., wenn du hier mit den Registern loslegst und so muss ich sagen, ich glaube ich kaufe mir am liebsten eine Schaltung und fang an mit LED's rumzuspielen?;)
(welches Board eignet sich für mich um zu experimentieren, ganz toll wärs natürlich wenn ich es später zu mienem Datenlogger umbauen könnte!;))

Gut dann weiss ich jetzt wenigstens schon das ich wohl einen FT232RL Chip zur Kommunikation einsetzen werde!

Nun, zum PC gibts zu sagen das ich noch Schüler bin und ihn von meinem Vater gekauft bekommen habe;))

Hab mir mal für alle fälle die Seite vom LogView gespeichert!
(aber das mit dem Matterhorn muss ich mir nochmals überlegen, wär doch schön! wer kommt mit?:p)

_______________________________________________

sorry for OT
wie alt seid ihr egentlich? (ist mir nur gerade durch den Kopf geschossen;)

wkrug
11.01.2008, 00:24
Zum Thema Experimentierboard.

Meine ATMEGA 8 Schaltungen stöpsel ich meistens auf einem Steckbrett zusammen, das es für um die 10,-€ rum im einschlägigen Elektronikhandel gibt.
Ein günstiges Einsteigerboard ist auch das ATMEGA 16 / 32 Bord von Pollin, das man aber selber zusammenlöten muß.
Ich hab diesem Bord noch einen Nullcraft Sockel Spendiert um den Controller bei Bedarf auch mal auf die Schnelle wechseln zu können.
Die Controlleranschlüsse sind auf einen Pfostenfeldstecker herausgeführt.
Ich hab mir da dran eine Passende Buchse mit einem Flachbandkabel drangemacht, die ich dann wieder in mein Steckbord einstecken kann.

Eine Quasi "Profi Lösung" ist das STK 500 von ATMEL, das bei Reichelt für rund 73,€ zu haben ist. Dieses Board beherrscht auch den "High Voltage Programming Mode" und kann eine Ganze Menge verschiedener AVR Controller schlucken. Dazwischen gibt es noch unzählige andere Lösungen.

Benutz doch mal die Suchfunktion hier im Forum, oder starte noch mal einen neuen Threat in der AVR Hardware Rubrik.

pongi
11.01.2008, 13:55
Billigeres USB-ISP ist zum Beispiel der MySmartUSB von myavr.de, kostet nur um 25€, und kann neben dem programmieren noch als UART, I2C und SPI Master benutzt werden.

Besserwessi
11.01.2008, 21:12
Als zwischending zwischen den EEPORMs (ca. 8 kB) und einer SD/MMC (um 1 GB) Karte gibt es noch Dataflash Ics (ca. 256 kB). Eine SD Karte würde ich schon wegen der Erschütterungen nicht benutzen. Die ganze Schaltung wird wohl mit sehr wenig Strom (1...20 mA je nach Sensoren) auskommen und könnte aus kleinen Batterien betrieben werden. Je nach Sensoren kann der Controller direkt mit 3 V von der Batterie laufen.
Als Controller würde ich einen Mega48 bis Mega168 empfehlen (fast gleich mit Mega8, aber neuer und sparsamer).
Den USB würde ich draußenlassen und eine UART (RS232) benutzen. Wenn man will kann man später den USB-UART Wandler ja immer noch selber bauen.

izaseba
11.01.2008, 21:36
Hallo,
Schau Dir mal den Butterfly an,
der ist in der Checkkarten Größe, Batteriebetrieben und hat einen 4 Mbit Dataflash integriert, eigentlich ein Traum für einen Dattenlogger.

Gruß Sebastian