Hallo Leute,
ich möchte einen Mikrocontroller nehmen und ihn zu einem AD-Wandler
programmieren. Wir können mal davon ausgehen, dass ich mir einen
ATmega32 kaufen möchte.
Dieser Mikrocontroller bzw. AD-Wandler soll die Messwerte eines Sensors
über einen USB-Anschluss an einen PC weiterleiten.
Ich möchte die Messwerte min. in tabellarischer Form auf meinem PC
ansehen können.
Ich bin allerdings total neu hinsichtlich der Assemblersprache. Erst
gestern habe ich den Entschluss gefasst, diese Sprach zu erlernen. Ich
möchte nur soviel können wie für mein Ziel nötig ist, d.h. aus
Mikrocontroller einen AD-Wandler machen.
Wie lange dauert es eure Meinung nach unter gegebenen Umständen. Ihr
könnt bei eurer Schätzung davon ausgehen, dass ich durchschnittlich
intelligent bin und Grundkenntnisse in C++ besitze. Am Tag würde ich
außerdem ca. 5 Stunden dafür aufbringen.
Gerne würde ich so ein Programm einfach runter laden und auf den
Mikrocontroller installieren. Noch lieber würde ich selber so ein
Programm schreiben, allerdings könnte es aufgrund eines vorgegebenen
Zeitlimits sehr eng werden.
Also was glaubt ihr, wie lange bräuchte ich für dieses Vorhaben. Ihr
könnt auch einfach schreiben, wie lange ihr für so etwas oder ähnliches
gebraucht habt.
Beste Grüße
Berus
Claude Juncker schrieb:> aus> Mikrocontroller einen AD-Wandler machen.
der uC hat einen AD-Wandler eingebaut, man muss nicht den uC selbst dazu
umwandeln oder wie auch immer du dir das vorgestellt hast.
Claude Juncker schrieb:> Grundkenntnisse in C++ besitze
warum dann nicht C ? warum Assembler ?
klaus schrieb:> Claude Juncker schrieb:>> Grundkenntnisse in C++ besitze>> warum dann nicht C ? warum Assembler ?
Weil er nicht weis, dass sich die uController auch mit C programmieren
lassen :)
Ohne große Kenntnisse aber mit ein wenig technischem Verständnis, lässt
sich das Erfassen eines Messwertes über den INTEGRIERTEN ADC innerhalb
eines Tages realisieren (dank der guten Tutorials hier).
Schwieriger wird das Transferieren der Daten über den uController an den
USB-Port des Computers.
Ich frage nur nach der Dauer zur Programmierung eines Programms für den
AD-Wandler des Mikrocontrollers in Assembler.
Ich dachte, dass das Programmieren des ADW mittels Assembler leichter
ist. Ich glaube es, weil es dafür mehr Lernhilfen bzw. Tutorials im
Internet gibt, die mir die Programmierung erleichtern.
Wenn ich in C++ programmieren würde, hätte ich keinen Anhaltspunkt wie
ich an die Sache herangehen sollte.
Berus
Wie gesagt, der ADC ist schon drinne. Den ADC musst du nur einschalten
und konfigurieren, dass geschieht durch setzen der entsprechenden Bits
in den Registern. Welche Register und welche Bits, steht im Datenblatt.
Ein Programm zum runterladen findest du oben auf der Seite unter den
Punkt AVR-Tutorial.
Problematischer ist der Wunsch die Daten per USB zu übertragen, wenn es
auch eine RS232 verbindung sein darf findest du oben ein Beispiel unter
dem Stichpunkt Uart.
Je nach fähigkeit kannst du mit den erwähnten Stellen im Tutorial dein
Wunsch in 1..2 Tagen erfüllen.
Ich habe das Gefühl missverstanden zu sein. Mag sein, das ich mich nur
unklar ausgedrückt habe. Also versuche ich mich noch ein Mal zu
erklären.
Ich will ein Programm schreiben (in Assembler), damit ich das analoge
Signal meines Sensors mit Hilfe eines im IC integriertem ADC über einen
USP Port auf meinem PC veranschaulichen kann.
Mit anderen Worten will ich den IC programmieren.
Ihr meint, ich könnte es in C++ machen. Ich wüsste in diesem Fall nicht
ganz, wie ich an die Sachen ran gehen sollte. Für Assembler hingegen
habe ich viele verständliche Tutorials hier auf dieser Seite als auch
woanders gefunden.
Beste Grüße
Berus
Wenn Du C++ kannst dann bleibe dabei.
Lies Dir hier die Tutorials durch und USB gibt's als freie Library.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Und wenn Du dann noch Hilfe brauchst Dein GESAMTES Projekt mit
Schaltplan und Programm einstellen.
Claude Juncker schrieb:> Ihr meint, ich könnte es in C++ machen. Ich wüsste in diesem Fall nicht> ganz, wie ich an die Sachen ran gehen sollte. Für Assembler hingegen> habe ich viele verständliche Tutorials hier auf dieser Seite als auch> woanders gefunden.
Der Hersteller selbst stellt normalerweise reichlich Beispielcode in C -
allerdings nicht C++ - zur Verfügung. Wenn man den nicht via Google o.ä.
findet, kann man das Ganze eigentlich bleiben lassen. Etwa 85% der
Programmierung von Mikrocontroller - Systemen ist Beschaffung und
Auswertung von Informationen, Datenblättern usw.
Claude Juncker schrieb:> Ich will ein Programm schreiben (in Assembler), damit ich das analoge> Signal meines Sensors mit Hilfe eines im IC integriertem ADC über einen> USP Port auf meinem PC veranschaulichen kann.> Mit anderen Worten will ich den IC programmieren.>> Ihr meint, ich könnte es in C++ machen. Ich wüsste in diesem Fall nicht> ganz, wie ich an die Sachen ran gehen sollte.
Mach's mit C/C++!!!
Wenn du nicht weißt, wie du an die Sache rangehen sollst, klemmt es auf
jeden Fall woanders. Sag einfach mal, was unklar wäre, dann gibt's ein
Beispiel und dann wird das schon.
Ich habe zwar meine ersten µC-Programme in Assembler geschrieben, aber
das muss man sich nicht wirklich antuen.
Claude Juncker schrieb:> Ich habe das Gefühl missverstanden zu sein. Mag sein, das ich mich nur> unklar ausgedrückt habe. Also versuche ich mich noch ein Mal zu
...
> woanders gefunden.>> Beste Grüße> Berus
Ich denke mal das es schwierig ist eine Zeitaussage zu treffen.
Du wirst nicht nur mit der Programmierung kämpfen.
- Du wirst die Programmierumgebung kennen lernen müssen
- Du wirst die Eigenschaften des Mikrocontroller kennen lernen müssen
- Du wirst lernen müssen wie man das fertige Programm auf den
Mikrocontroller überträgt.
- Du wirst die Eingenschaften des AD-Wandlers verstehen müssen
- Du wirst eine Entwicklungsplatine verstehen müssen, wenn Du nicht
selbst bauen willst
- Wenn Du selbst bauen möchtest musst Du das Teil erst einmal
grundsätzlich ans laufen bekommen
Wie schnell lernst Du neue Dinge? Wie groß ist Dein Vorwissen bezüglich
Embedded Systemen?
Ich könnte Dir jetzt eine Zeitspanne von 2 Tagen bis zu einem Monat
nennen ... aber auch das wäre unseriös ...
Tipp; such Dir eine möglichst verbreitet, fertige Platine, z.B. Arduino
und die Programmierumgebung dazu. Beim Arduino gibt es viele
Programmierbeispiele und jede Menge Spezialisten, die Dir weiter helfen.
Wenn dann die ersten Programme laufen kannst auf der Umgebung natürlich
auch alles in Assembler oder C selbst neu programmieren.
Hi
Claude Juncker schrieb:> Ich habe das Gefühl missverstanden zu sein. Mag sein, das ich mich nur> unklar ausgedrückt habe. Also versuche ich mich noch ein Mal zu> erklären.>> Ich will ein Programm schreiben (in Assembler), damit ich das analoge> Signal meines Sensors mit Hilfe eines im IC integriertem ADC über einen> USP Port auf meinem PC veranschaulichen kann.> Mit anderen Worten will ich den IC programmieren.
Also, wenn ich dich richtig verstehe, willst du wissen, wie lange du
brauchst, um Assembler zu lernen. Die Umsetzung der analogen Signale ist
lediglich deine Anwendung.
Die Antwort könnte die bestenfalls dein Vater, Mutter oder Geschwister
geben, vielleicht noch ein Freund, aber aus einer Distanz heraus einem
völlig Fremden seine Auffassungsgabe zu bestätigen, halte ich für
unmöglich.
Du hast doch das Tutorial schon gefunden. Was hindert dich daran, die
Beispiele dort auszuprobieren. Ein RS 232 auf USB Umsetzer ist preiswert
und ich selbst setze diese Dinger zum Datentransfer ohne Probleme ein.
Auf PC Seite kannst du dich mit C++ austoben und eine Anwendung
schreiben, die deine Daten Archiviert.
Wie lange du brauchst, um Assembler zu verstehen und umzusetzen,
letztlich Erfolg mit deiner Anwendung zu haben, ist allein deiner
Intelligenz geschuldet. Vielleicht hast du schon an einem Tag,
vielleicht aber auch erst in einem Monat den Durchblick. Ich kann dir
ergänzend zum Tutorial einfach mal einen anderen Beitrag in einem
anderen Forum nennen, der dir weiter helfen kann. Geh bei
AVR-Praxis-Forum in die Rubrik FAQ und lies, was dort unter "Keine Angst
vor Assembler" steht.
Gruß oldmax
Du kannst in ein Programm, dass Du in C schreibst auch Teile in
Assembler schreiben. Das Problem das Du gerade hast ist, dass Dir die
Programmierung und Funktion des uC unbekannt sind und Du einfach per
Copy & Paste glaubst ein paar Assembler-Schnipsel zusammenstückeln zu
können und dann wird es schon irgend wie gehen. Tatsächlich wirst Du
zwangsläufig, und in Assembler noch mehr als in C, mit dem Problem
konfrontiert werden, wie Du die Bits in den Registern setzt und löscht
um den AD-Wandler zu konfigurieren.
Um das Studium des mehrere Hundert Seiten dicken Manuals kommst Du nicht
herum und zu jeder Funktion findest Du darin auch ein Codebeispiel in C
und Assembler. Für den schnellen Erfolg wäre es vielleicht hilfreich,
nicht mit der Hardware zu beginnen sondern ein fertiges System z.B.
einen Butterfly umzustricken und sich mit den gewonnenen Erkenntnissen
das eigene Projekt zu realisieren. Nach den oben gemachten Angaben kann
man damit sicherlich binnen 3 bis 5 Tagen zum Ziel kommen.
tex schrieb:> Du kannst in ein Programm, dass Du in C schreibst auch Teile in> Assembler schreiben.
Vorher sollte man aber sehr gut überlegen, warum man ein C-Programm
unbedingt unleserlicher, unwartbarer und unportabel machen will.
Für Anfänger also definitiv kein guter Ratschlag, zumal man erstmal die
Speicherverwaltung, Parameterübergabe und Registerbenutzung des
jeweiligen Compilers lernen muß, damit nichts abstürzt.
Der Compiler übernimmt keinerlei Sicherung für Deinen verbrochenen
Assemblercode.
tex schrieb:> Um das Studium des mehrere Hundert Seiten dicken Manuals kommst Du nicht> herum
Nö.
Die AVR Datenblätter sind sehr gut strukturiert, man findet schnell die
nötigen Informationen im Kapitel ADC.
Und es steht alles in einem einzigen PDF.
Ich danke euch für eure Beiträge. Sie sind sehr inspirierend und
hilfreich.
Ich weiß nur jetzt nicht mehr, ob ich wirklich mit Assembler
programmieren möchte. Ich neige jetzt mehr zu C++. Das einfache C
beherrsche ich nicht.
Ich melde mich wieder bei euch, wenn ich ne Frage zu meinem Projekt
habe.
uC ich komme!
Berus
Claude Juncker schrieb:> Ich neige jetzt mehr zu C++. Das einfache C beherrsche ich nicht.
Solange du die Schlüsselwörter "new", "delete", "try", "catch" und
"virtual" erstmal weglässt, hast du keinen grundlegenden Unterschied
zwischen beiden.
Man kann auch in C++ ein reines C-Programm schreiben ;-), aber selbst,
wenn du aufgrund deiner C++-Erfahrung dazu neigst, lieber in Klassen
und Methoden statt in Strukturen und Funktionen zu denken, spielt das
keine große Rolle. Solange du keine virtuellen Methoden benutzt, hat
das Resultat in C++ auch keinerlei Performance-Nachteile gegenüber
einem in C.
Das Ansprechen des ADC ist ohnehin reine low-level-Arbeit, die kaum
Potenzial für eine der Sprachen bietet, irgendwas besser oder
schlechter zu machen als die andere. Ob du nun schreibst:
Wenn du einen FT232 (o.ä.) verwendest, dann bekommst du die
Kommunikation zum PC mittels USB auch schnell hin. Ist ja dann wie eine
serielle Schnittstelle...
Grüße,
Claude Juncker schrieb:> Ich neige jetzt mehr zu C++.
Wenn das das Ergebnis der Ratschläge in diesem Forum ist, dann ist etwas
mächtig schiefgelaufen.
Gruss Reinhard
Um nochmal das gesamte Ausmaß des Dramas deutlich zu.machen:
> Dieser Mikrocontroller bzw. AD-Wandler soll die Messwerte eines Sensors> über einen USB-Anschluss an einen PC weiterleiten.> Ich möchte die Messwerte min. in tabellarischer Form auf meinem PC ansehen
Das sind für mich mehr Teilprobleme als nur C oder nicht C...
Und dann ist da noch die Hardware. Wie wird der Sensor angeschlossen und
wie wird die USB Verbindung zum PC realisiert?
@ berus
Zeichne mal eine Skizze mit den nötigen Komponenten und überleg dir, was
du davon schon kannst, und was du noch lernen musst.
ich habe mein Projekt lange geplant und gründlich darüber nachgedacht.
Ich möchte eine Messkette für UV-Strahlen aufbauen. Dazu habe ich mir
schon eine UV-Diode ausgesucht und den elektrischen Schaltplan habe ich
inzwischen auch entworfen. Den werde ich noch verfeinern. Wobei ich mir
nicht ganz sicher bin, ob man für eine UV-Diode noch einen analogen
Tiefpass benötigt. Das sei aber nur so dahingestellt.
Wie Merkel sagen würde: Das Gebiet der uC ist für mich Neuland ;)
So wie ich es verstanden habe, haben viele uC schon einen ADW. Diese
müssen nur noch an die eigenen Bedürfnisse angepasst werden. Diese
Anpassung werden über die Register des im uC integrierten ADWs
vorgenommen. Diese Register sind bei ATmegas das "ADMUX" und das
"ADCSRA". Diese muss ich so programmieren, dass sie meinen Befehlen
gehorchen.
Ich muss zunächst ein Mal herausfinden, welcher Vorschlag von euch, der
einfachste ist. Das heißt mich zwischen den verschieden Controllern
entscheiden und danach noch die Programmiersprache festlegen. Soll ich
einen Atmega, FT232 oder doch einen Arduino auswählen? Mir kommt es so
vor als würde jeder denjenigen uC hochpreisen, mit den er selbst schon
einmal gearbeitet hat, unabhängig davon, ob es jetzt für einen
Einsteiger einfach ist.
Auf jeden Fall finde ich es gut, dass ihr mir die vielen verschiedene
Möglichkeiten offen gelegt habt. Jetzt muss ich mich allerdings mit der
berühmten "Qual der Wahl" rumplagen. Aber so soll es sein. Eine
vernünftige Marktanalyse erspart mir viel Arbeit im Nachhinein. Ich fang
damit an.
Ich melde mich später wieder!
Berus
Ich habe doch noch eine Frage bevor ich in die große Welt der uC
eindringe. Wenn ich irgendein beliebigen Atmega mit C++ programmiere,
dann sendet der uC ja nur dem PC ein Binärcode. Gibt es jetzt schon
gratis Software, die mir diese Binärzahlen in Spannung in Form einer
Tabelle ausliest?
Sehe ich das richtig oder bin ich noch immer blind?
Berus
Claude Juncker schrieb:> Soll ich> einen Atmega, FT232 oder doch einen Arduino auswählen?
Du vergleichst Äppel mit Birnen und Pflaumen...
Ein Arduino ist ein fertiges Board, das (meist) einen ATMega enthält
und oft auch noch einen zusätzlichen ATMega-USB.
Unter Arduino (als Konzept) versteht man aber auch eine
Entwicklungsumgebung mit eigenen Bibliotheken, die auf die
Arduino-Hardware zugeschnitten sind und in C++ verwendet werden. Ja,
richtig gelesen, Arduino ist C++ mit eigenen Bibliotheken. Demnach ist
Arduino für Dich das Mittel der Wahl (ich meide es aber wie der Deiwel
das Weihwasser, denn für C und C++ bin ich zu doof).
Ein FT232 ist ein autarker USB-RS232-Umsetzer, wie er in vielen
USB-Seriell-Adaptern verbaut ist. Er muss natürlich auch auf die von Dir
anzufertigende Platine aufgelötet werden, mitsamt seiner notwendigen
Kleinbauteile.
Ein ATMega ist ein Controller, der mitsamt seinen Kleinbauteilen auf
eine von Dir anzufertigende Platine aufgelötet werden muss.
Aber all dieses sind Suchbegriffe für Gooooogel oder Wikipedia...
...
Claude Juncker schrieb:> Soll ich einen Atmega, FT232 oder doch einen Arduino auswählen?
Einen „ATmega oder FT232“ sollst du gar nicht in Betracht ziehen. ;-)
Der FT232* (folgen noch irgendwelche Buchstaben) ist ein IC, der
einen Datenstrom gemäß RS-232-Format (aber mit TTL-Pegel, also so,
wie es ein Controller an seiner UART hat) auf USB umsetzt. Aus Sicht
des PCs ist das dann eine „virtuelle serielle Schnittstelle“, auf
die du beliebige Programme aufsetzen kannst, die normalerweise mit
seriellen Schnittstellen arbeiten würden, beginnend bei einem
allgemeinen Terminalprogramm.
Den FT232 brauchst du also zusammen mit einem ATmega<irgendwas>,
weil du damit das Problem „PC-Anbindung“ auf das Problem „ich muss
eine Aus- und ggf. Eingabe über die UART meines Controllers vornehmen
können“ herunterbrechen kannst, welches eine ziemliche Standardaufgabe
ist, für die es unzählige Beispiele gibt.
Ein Arduino ist in allererster Linie dann eine Hardwareplattform, die
(je nach Modell) genau so etwas schon als fertige Hardware bietet:
ein Controller mit einer seriellen Anbindung via USB. (Zusätzlich
gibt's für die Arduino-Plattformen noch ein separates Programmiermodell,
welches ein wenig von Standard-„alles zu Fuß“-C abweicht, aber das
musst du nicht zwingend benutzen, falls du dich für Arduino als
Hardwareplattform entscheidest.) Zusätzlicher Vorteil des Arduino
ist ein integrierter Programmieradapter.
Ansonsten gibt es auch genügend alternative Hardwareplattformen, die
(bis auf die besondere Arduino-Programmierumgebung) ähnliches leisten,
oder du kannst natürlich auch alles selbst bauen.
Claude Juncker schrieb:> dann sendet der uC ja nur dem PC ein Binärcode.
Nein. Er sendet das, was du ihn senden lässt. Das können durchaus
lesbare Zeichen sein.
> Gibt es jetzt schon> gratis Software, die mir diese Binärzahlen in Spannung in Form einer> Tabelle ausliest?
S. o., im einfachsten Falle fängt man mit einem Terminalprogramm an,
in dem man sich die Ausgaben anzeigen lässt. Die Umwandlung der
Binärzahlen in lesbaren Text (bzw. konkrete Werte deines UV-Sensors,
was auch immer) lässt man dann gleich im Controller machen. Das ist
ja schließlich auch ein (wenn auch kleiner) Computer.
Du bist einfach noch sehr unerfahren und deswegen stellst Du die
falschen Fragen auf falsch Weise.
Das ein Anfänger, im Vorhinein, durch gründliche "Marktanalysen"
sämtliche Fragen klären kann, ist ein Mythos. Das klappt so nicht. Du
wirst viele Dinge tun, die nicht direkt auf Dein Ziel hinführen, Dir
aber eine Menge Erfahrungen vermitteln die Du für Dein Ziel brauchen
kannst.
Fange einfach mal damit an, eine LED zum blinken zu bringen. Es ist
wesentlicher das Du überhaupt anfängst, als das Du gleich das richtige
Board, die richtige Programmiersprache und die richtigen Bauteile
wählst.
Diese ersten eigenen Erfahrungen werden Dir Richtungen weisen, die wir
anderen schon kennen. Das sind sehr persönliche Erfahrungen. Deswegen
sind sie teilweise auch widersprüchlich.
Deswegen: Fang mit was ganz Einfachem und mit wenig finanzielle Aufwand
an. Alle anderen Vorabfragen sind letztlich sinnlos.
Claude Juncker schrieb:> ich habe mein Projekt lange geplant und gründlich darüber nachgedacht.
...
> einen Atmega, FT232 oder doch einen Arduino auswählen? Mir kommt es so> vor als würde jeder denjenigen uC hochpreisen, mit den er selbst schon> einmal gearbeitet hat, unabhängig davon, ob es jetzt für einen> Einsteiger einfach ist.
Ja, natürlich kann man nur zu Dingen seine Erfahrungen übermitteln die
man kennt ...
Übrigens habe ich noch nie mit einem Arduino etwas gemacht, glaube aber
das es relativ einfach ist und die Anzahl der Menschen, die damit herum
Basteln ist groß. Ich glaube Du hast eine Breite Basis für Unterstützung
und Dokumentation.
Wenn Du später dann tiefer einsteigen möchtest hast Du auch die
Möglichkeit "roh" die Atmel Prozessoren in der Arduino-Platform zu
nutzen.
Und zu guter Letzt gibt es diese "Hardware-Shield-Welt". Es gibt so
viele Hardware Erweiterungen das es sehr wahrscheinlich ist das Du
selbst erst mal nicht basteln möchtest, Du kannst natürlich trotzdem
selbst Hardware-Erweiterungen entwickeln, wenn Du möchtest.
Meiner Meinung nach hast Du damit einen einfachen Einstieg und kannst
die vielen Dinge, die Du lernen musst erst mal entkoppeln.
> Ich melde mich später wieder!>> Berus
Claude Juncker schrieb:> Wenn ich irgendein beliebigen Atmega mit C++ programmiere,
dann musst Du erstmal den richtigen Compiler in Deine C++-IDE einbinden.
Mit Deinem C++-Kompilat für PC kann der AVR nix anfangen.
> dann sendet der uC ja nur dem PC ein Binärcode.
UART (RS232) sendet Bytes. Die ADCs der AVRs haben eine Auflösung von 10
Bit. Demnach sind zwei Bytes Rohdaten je Messwert zu übertragen. Man
kann natürlich die Daten auch im AVR skalieren und in ASCII-Text
umwandeln und diesen dann mit entsprechenden Trennzeichen (z.B. wie
*.csv) als Text zum PC (mit Terminalprogramm) senden, der es dann als
Datei speichern und in eine Tabellenkalkulation einlesen kann.
...
Natürlich habe die meisten von uns den letzten Prozessor, mit dem sie
gearbeitet haben, im Kopf. Das gilt sowohl im positiven wie auch im
negativen Sinne.
Wenn ich Deine Posts richtig gelesen habe, hast Du zwei Probleme:
1. Analogwerte Messen.
2. Daten übertragen.
Beides können zumindest die Atmels, ohne externe Unterstützung, nur
eingeschränkt.
Bei der analogen Messung musst Du Dich mit der Genauigkeit (meist 10
Bit) herumschlagen. Du musst zur Kenntnis nehmen, dass nur lt.
Datenblatt, eine direkte Messung möglich ist. Da sind so Sachen wie
Spannungsbereich, Eingangswiderstand und -schutz in der Warteschlange.
Bei der Anzahl an analogen Eingängen gilt z.B. nicht beliebig viele und
je mehr, desto langsamer.
Bei der Datenübertragung würde es mich nicht wundern, wenn die
Implementierung eines USB-Treibers mehr Zeit in Anspruch nimmt, als die
der Analogmessung. Es gibt, mittlerweile, Chips, die sozusagen USB
eingebaut haben und welche, die auf externe Unterstützung angewiesen
sind. Da hat sich der oben erwähnte FTDI-Chip bewährt, der ist aber
nicht der einzige.
Wenn Du Dich einfach mal spielerisch dem Problem nähern willst, so würde
ich mir mal die Arduino-Serie anschauen. Damit kannst Du 1:1 (wie im
Datenblatt) Analogmessung ausprobieren und eine serielle (u.U. auch USB)
Schnittstelle ist auch schon da. Der nach meiner Meinung größte Vorteil
dieser Lösung ist der, wenn sich herausstellt, dass genau diese Lösung
die Falsche war, Du finanziell nicht ruiniert bist.
Wenn man den Thread so durchliest, kommt man, besonders was
Assembler/C/C++ angeht, zu dem Schluss, dass Claude hier ein
Selbstgespräch führt, in dem er mal zu dieser, mal zu jener Lösung
neigt, aber die Beiträge der anderen liest er wohl garnicht. Jedenfalls
bin ich mir nicht bewusst, dass wir ihn für ein Problemchen wie eine
Messwerterfassung, das sich heute schon mit den kleinsten Controllern
realisieren lässt (ADC + UART), gemeinsam dazu gedrängt haben, unbedingt
in C++ zu programmieren. Etwas mehr Vernunft ist im Forum doch noch
vorhanden.
Gruss Reinhard
@Hannes: dein Überblick hinsichtlich der Unterschiede zwischen Arduino,
FT232 und ATmega ist sehr aufschlussreich. Ich habe die Birne mit dem
Apfel verwechselt, weil sie von Weitem sehr ähnlich aussehen.
@dl8dtl: also daraus ziehe ich den Schluss, dass der Arduino (als
Bauteil und Software) für meine Absicht geeignet ist, Da es mir einige
Arbeitsschritte erspart. Auch du, so wie Hannes, empfiehlst mir den
Griff zum Arduino hin, jedenfalls hast du ihn mir schmackhaft gemacht.
"S. o., im einfachsten Falle fängt man mit einem Terminalprogramm an,
in dem man sich die Ausgaben anzeigen lässt. Die Umwandlung der
Binärzahlen in lesbaren Text (bzw. konkrete Werte deines UV-Sensors,
was auch immer) lässt man dann gleich im Controller machen."
wichtig!
@Hmm(Gast):"Du bist einfach noch sehr unerfahren und deswegen stellst Du
die
falschen Fragen auf falsch Weise."
Das mag stimmen.
"Fang mit was ganz Einfachem und mit wenig finanzielle Aufwand
an"
Ich habe aber einen straffen Zeitplan und kann es mir deshalb nicht
erlauben, etwas anderes als mein Projekt zu machen.
Das man durch Fehler dazu lernen kann, das sehe ich auch so.
@Frickelkram: danke! Auch du rätst mir zu mindesten indirekt zum
Arduino.
@hannes:
"dann musst Du erstmal den richtigen Compiler in Deine C++-IDE
einbinden.
Mit Deinem C++-Kompilat für PC kann der AVR nix anfangen."
Also benötige ich noch einen Compiler, der dem AVR mein C++ Code
übersetzt. Welche Compiler sind da gängig?
Auch du erwähnst das "Terminalprogramm". Dieses Schlagwort werde ich
sicherlich noch brauchen.
@amateur(Gast): mein Problem liegt nicht im Aufnehmen des Analogsignals,
jedenfalls theoretischnicht. Das glaube ich zumindestens ;)
ich habe gar nicht genug Geld, um mich finanziell zu ruinieren ;)
@Reinhar Kern:
das sind nicht gerade leichte Vorwürfe. Was du Problemchen nennst, ist
für mich eine große Herausforderung. Ich mache so etwas zum ersten Mal.
Ich wollte nicht ignorant erscheinen. Es ist nur so, dass ich nicht auf
jeden einzelnen Beitrag antworten möchte, da das sehr zeitfressend ist.
Natürlich kann man seine Meinung ändern, wenn man der Überzeugung ist,
dass es zu einer Verbesserung bzw. Erleichterung führt. Nichts für
Ungut!
Besten Dank an alle!
Berus
@Claude
Hättest du gestern
>> Autor: Claude Juncker (berus)>> Datum: 15.08.2013 19:46
angefangen dich hier ein zu arbeiten:
http://www.mikrocontroller.net/articles/AVR-Tutorial
dann würdest du jetzt
>> Autor: Claude Juncker (berus)>> Datum: 16.08.2013 16:02
schon Werte an den PC übertragen.
...
Oh Mann
Ein Arduino kostet nur 20 Euro. Die Software gibt es kostenlos. Warum
kann man sich nicht einfach einen kaufen. Da kann man alles ausprobieren
und bei nichtgefallen den Atmel aus dem Sockel nehmen und noch selbst
verlöten.
Muss man jedes Detail hier erst mal stundenlang durch diskutieren?
Fang an mal was zu tun.
Reinhard Kern schrieb:> gemeinsam dazu gedrängt haben, unbedingt> in C++ zu programmieren.
Das liegt nur daran, dass er behauptet hat, C++ zu können. Also liegt es
nahe, ihm Arduino zu empfehlen, was ja (anderen Arduino-Threads zufolge)
auch nur (ressourcenverschwenderisches) C++ mit eigenen, auf die
Arduino-Haerdware abgestimmten Bibliotheken sein soll.
Ansonsten würde ich niemandem C++ oder Arduino empfehlen. Hätte er
geschrieben, dass er Qbasic, Visual-Basic oder Pure-Basic kann, dann
hätte ich ihm Bascom empfohlen. Aber hätte ich Enten gekauft, dann wären
die Hühner nicht ersoffen... ;-)
...
Hannes Lux schrieb:> (ressourcenverschwenderisches) C++
C++ ist keineswegs per se ressourcenverschwenderisch.
Andererseits kann man auch in Assembler ressourcenverschwenerisch
arbeiten. ;-) (Solange man eine bestimmte Architektur nicht gerade
wie seine Westentasche in- und auswändig kennt, dürfte das dort sogar
der Regelfall sein.)
Hannes Lux schrieb:> auch nur (ressourcenverschwenderisches) C++
C++ ist nicht verschwenderisch, da gibt es eben eine Tabelle mit den
Objektreferenzen und den Pointer darauf.
Wieviele Objekte hat man auf einem kleinen 8bit µC ?
Sagen wir hundert, dann enthält die Referenztabelle 100 Einträge = 101
Byte mehr.
Das ist aber den Vorteil der Kapselung und Vererbung mehr als Wert !
Das Problem hier liegt wohl eher beim TS, denn er hat bis jetzt wohl
noch kein Tutorial gelesen bzw. mal wie schon erwähnt eine LED blinken
lassen und via Poti gedimmt, damit würde er jetzt wissen wie der ADC und
die PWM funktionieren.
Wenn er wirklich C++ kann muß er sich nur den µC als einzelne Klasse
vorstellen und darin seine Funktionen unterbringen, wo liegt das Problem
?
Jörg Wunsch schrieb:> C++ ist keineswegs per se ressourcenverschwenderisch.
Auf dem kleinen AVR schon. Von Plattformen mit OS war hier nicht die
Rede.
>> Andererseits kann man auch in Assembler ressourcenverschwenerisch> arbeiten. ;-)
Sicher kann man das. Man kann in AVR-ASM aber auch recht effizient
programmieren, wenn man die Architektur einigermaßen kennt.
Jetzt schreit der C-ler natürlich wieder nach der fehlenden Portablität.
Natürlich ist das nicht portabel, muss es aber auch nicht sein, wenn man
es nur hobbymäßig betreibt und nicht unter Termindruck seine Semmeln
damit verdienen muss.
Übrigens ist die hochgepriesene Portablität auf so kleinen Controllern
wie den ATTinys und (kleinen) ATMegas auch nur solange möglich, wie man
keine Hardware-Einheiten benutzt, die nicht jeder Controller hat. So
wäre z.B. das Portieren meines Modellbahn-Soundmodules mit ATTiny85 auf
einen ATMega selbst dann sinnfrei, wenn es in C geschrieben wäre. Denn
es wird der Timer mit PLL als ADC benutzt, ein Feature, dass die ATMegas
(in DIL-Gehäusen) nunmal nicht haben.
...
cppler schrieb:> Das Problem hier liegt wohl eher beim TS, denn er hat bis jetzt wohl> noch kein Tutorial gelesen bzw. mal wie schon erwähnt eine LED blinken> lassen und via Poti gedimmt, damit würde er jetzt wissen wie der ADC und> die PWM funktionieren.
Das gibt sein straffer Zeitplan doch nicht her... ;-)
...
Hi Hannes,
Hannes Lux schrieb:> Reinhard Kern schrieb:
...
> Das liegt nur daran, dass er behauptet hat, C++ zu können. Also liegt es> nahe, ihm Arduino zu empfehlen, was ja (anderen Arduino-Threads zufolge)> auch nur (ressourcenverschwenderisches) C++ mit eigenen, auf die> Arduino-Haerdware abgestimmten Bibliotheken sein soll.
also das war sicherlich nicht der Grund warum ich den Arduino für die
Beste Wahl halte.
Ich glaube einfach das Claude viel schneller in Gang kommen wird mit so
einem Teil. Hilfe gibt es wie Sand am Meer, Hardware ist kein Problem
... das ist alles. Ich erinnere mich noch wie steinig der Weg vom
blanken Mikrocontroller zum funktionierenden Board sein kann. Vielleicht
haben das einige hier vergessen?
Die Programmiersprache sehe ich als zweitrangig an.
Ich habe schon in viele Sprachen programmiert, angefangen habe ich in
Assembler ... meine Erinnerungen an Fortran versuche ich zu verdrängen
... zu C komme ich immer wieder zurück. Das wird Claude auch irgendwann
so gehen, vermute ich.
Hannes Lux schrieb:> Jörg Wunsch schrieb:>> C++ ist keineswegs per se ressourcenverschwenderisch.>> Auf dem kleinen AVR schon.
Nein, Hannes. Über Dinge, die du nicht kennst, solltest du besser
nicht urteilen.
C++ als Sprache hat gegenüber anderen Hochsprachen keinen
grundsätzlichen Overhead. Das ist auch völlig unabhängig davon,
ob man nun Klassen aufbaut und davon Objekte instanziiert oder ob
man C++ nur als eine Art C mit leicht anderer/erweiterter Syntax
benutzt. Overhead entsteht erst, wenn man die konkrete Zuordnung
eines Objekts zu einer Klasse (und damit zu den anzuwendenden
Methoden) erst zur Laufzeit ermitteln kann, oder wenn man Konzepte
wie exceptions benutzt. In beiden Fällen würde aber ein ähnlicher
Overhead entstehen, wenn man sowas in C oder gar in Assembler
schreibt.
Die Arduino-Umgebung erzeugt in der Tat nicht völlig optimalen
Code für manche Dinge (Manipulieren von IO-Pins beispielsweise),
aber das liegt nicht am zugrunde liegenden C++, sondern am dort
gewünschten recht hohen Abstraktionsniveau: Wenn die Applikation
eben Pin 3 einschalten will, dann geht das über eine Bibliothek,
die das für die konkrete Hardwareplattform umsetzt. Kostet ein
paar Zyklen mehr als ein direktes SBI, aber dafür kann man den
Quellcode dann eben nicht nur 1:1 auf einem anderen Arduino weiter
benutzen, bei dem Pin 3 jetzt nicht an PB3 sondern an PD5 liegt,
sondern selbst auf einem, bei dem es vielleicht PB13 eines
Cortex-M3 ist.
> Sicher kann man das. Man kann in AVR-ASM aber auch recht effizient> programmieren, wenn man die Architektur einigermaßen kennt.
Naja, wenn man die Architektur nur einigermaßen gut kennt, sollte
man sich nicht wundern, dass der Compilerhersteller sie vielleicht
doch sogar besser kannte. ;-)
Man muss sie bei der Qualität heutiger Compiler schon recht gut
kennen, damit man in Assembler wirklich durchweg besseren Code als
ein Compiler schreibt. Für einen AVR würde ich mir das beispielsweise
gerade so zutrauen, für einen ARM überhaupt nicht, auch wenn ich
eine grundlegende Idee von dessen Assemblersprache und Befehlssatz
habe und das Resultat des Compilers zumindest lesen und verstehen kann.
OT: Bei LISP immer schön an die ' denken und wir wissen ja warum EMACS
so schön Klammern hervorhebt :-P
@Hannes:
Also die Programmiersprache selber ist eigentlich egal wenn man denn
weiß was man will und wie man dahin kommt.
Ob ich eine Schleife mit "goto", "jmp" oder "while" realisiere bleibt
sich gleich es wird nachher ja sowieso alles in die jeweiligen Opcodes
übersetzt.
Der Vorteil von Hochsprachen ist aber nunmal deren Unabhängigkeit von
der Architektur, was bei Assembler nicht gegeben ist.
Die erwähnten Abstraktionsmöglichkeiten wollen wir dabei mal komplett
weglassen ;-)
Wolfgang Heinemann schrieb:>> IF (I) 13, 23, 33>>>> bitte nicht ...
Eigentlich ist es schade, dass es keinen "Obfuscated FORTRAN Code
Contest" gibt (wie bei C). Dabei bietet die Sprache doch nun wirklich
noch viel mehr Möglichkeiten, verworrenen und unlesbaren Code zu
verfassen als C …
Wie hieß der Spruch doch gleich? "Real Programmers can write FORTRAN
in any language." :)
Jörg Wunsch schrieb:> C++ als Sprache hat gegenüber anderen Hochsprachen keinen> grundsätzlichen Overhead. Das ist auch völlig unabhängig davon, ob man> nun Klassen aufbaut und davon Objekte instanziiert oder ob man C++ nur> als eine Art C mit leicht anderer/erweiterter Syntax benutzt.
Um das mal zu belegen. Eine einfache LED-Klasse könnte etwa so
aussehen:
@ Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
>> meine Erinnerungen an Fortran versuche ich zu verdrängen>:-)> IF (I) 13, 23, 33
Und was bedeutet diese Zeile?
Sorry, aber bei den oben stehenden muss ich schon etwas schmunzeln. Da
werden FT232, USB-UART und sogar Arduino empfohlen. Fehlt bloß noch der
RPi... Das Problem liegt dabei woanders.
Der TO hat offenbar ein Problem damit, von PC-Programmierung auf
µC-Programmierung umzuswitchen und sich in die Funktionsweise eines µC
hineinzudenken. Er denkt offenbar in Threads und Objekten, statt sich
mit Bits und Registern zu befassen. Da hilft meiner Meinung nach nur ein
konsequentes Kennenlernen des jeweiligen µCs. Und zwar vorzugsweise in
ASM. Denn nur so begreift man, was im Inneren des Controllers abgeht.
Allerdings ist es illusorisch, als Anfänger einen USB-Stack auf die
Beine zu stellen, egal ob in C oder ASM. Dafür gibt es von vielen
Herstellern fertige Libs die solchen komplexen Aufgaben übernehmen.
Natürlich sollte man auch dort den µC einigermaßen kennen, sonst steht
man bei Fehlern auf dem Schlauch.
Mit dem PIC 18F2550 und der USB-Lib von Microchip konnte ich eine
ähnliche Aufgabe an einem Nachmittag lösen. Auf PC-Seite ist das ganze
dank virtuellem COM-Port recht simpel. Alle notwendigen Dateien konnte
ich bei Microchip runterladen.
Auch wenn es sicher bessere µCs als die AVRs gibt, so sollten doch auch
bei Atmel entsprechende Bibliotheken verfügbar sein. Wenn nicht sollte
man sofort wechseln...
>>"Fang mit was ganz Einfachem und mit wenig finanzielle Aufwand
an"
>Ich habe aber einen straffen Zeitplan und kann es mir deshalb nicht
erlauben, etwas anderes als mein Projekt zu machen.
Schön. Aber was nützt Dir das? Falls ich plane bis Mittwoch eine
Saturn-V nachzubauen, kann ich mir bis dahin alle Toilettengänge
verkneifen, werde es wohl aber nicht weiter als bis zum fertigen
"Utility"-Beutel bringen. :-)
Ein Zeitplan muss realistisch sein oder das Projekt realistisch für
einen vorgebenen Zeitrahmen. Jetzt schreibe doch mal bis wann Du fertig
sein musst.
Das Problem wird sonst sein, dass Du bei der Konfiguration des ADCs hier
so Fragen stellst, wie man zwei Bits setzt ohne die anderen zu
beeinflussen oder warum die erste Wandlung immer so krumm ist. (Es mag
sein, das die Beispiele hier nicht treffen). Es fehlen Dir einfach die
Grundlagen. Ich habe den einfachen Anfang nicht empfohlen, weil das
didaktisch sinnvoll sondern weil es praktisch notwendig ist.
Ansonsten sage ich Dir ein Scheitern, wenn auch innerhalb des
Zeitplanes, voraus. Tut mir leid.
Jens PICler schrieb:> Mit dem PIC 18F2550 und der USB-Lib von Microchip konnte ich eine> ähnliche Aufgabe an einem Nachmittag lösen.
Damit sollte er sich unter den gegebenen Umständen garnicht erst
befassen, sondern nur ADC und UART zum Laufen bringen, den Rest erledigt
ein FTDI232 oder ein entsprechender Wandler am PC. Auch wenn das
unelegant klingt, aber dann muss er sich nicht auch noch mit USB
auseinandersetzen. Das kann er nachholen, wenn sein Konstrukt in
Tausender-Stückzahlen produziert werden soll.
Ich nehme an, für dich war USB nicht so ganz neu.
Gruss Reinhard
Bei Conrad gibt es dafür etwas fertiges:
H-Tronic 12 Bit USB-Datenerfassungssystem Baustein Über USB
Best.-Nr.: 191028 - 62
Der TO hat offensichtlich mit µC noch nie etwas zu tun gehabt und
braucht innerhalb einer Woche etwas funktionierendes. Das klappt mit den
obigen Ratschlägen niemals.
(Labels in C sind Bezeichner, in FORTRAN einfach nur Zahlen, die in
Spalte 1 bis 5 stehen müssen. Daher habe ich das mal C-mäßig
umschrieben.)
Das ist das sogenannte arithmetische IF, eine der größten
Krankheiten von FORTRAN. ;-)
Ein Beispiel wie einfach es mit einem Arduino realisiert werden könnte.
http://www.mats-vanselow.de/arduinotemperatur
Im ersten Beispiel erfolgt die Ausgabe an ein Terminalprogramm.
Das letzte Beispiel (mit Ethernet Shield) ist gar mit Ausgabe als
Website.
Und wenn es danach weitergehen soll, und mehr selber gemacht werden
soll, so kann jederzeit auch ohne Arduino-Overhead weiter gefahren
werden.
Jedenfalls in der Zeit, seit dieser Thread eröffnet wurde, würde ein
erster Entwurf damit schon längst laufen, wenn das Projekt denn schon so
zeitkritisch ist.
Ich finde es schon krass, wie sich hier alle auf den Thread stürzen und
einem völlig unbedarften Anwender mit Tipps über technische Details der
Implementierung überhäufen.
Dabei ist absolut überhaupt rein gar nichts über die Anforderungen
bekannt:
* Was genau soll damit gemacht werden?
* Wer ist der Anwender?
* Wie ist die Umgebung?
* Welche Stückzahlen werden benötigt?
* Technische Anforderungen an Auflösung, Frequenz, Messbereich?
Kauf dir ein Multimeter mit PC-Schnittstelle und gut.
Das schreibt dir die Daten direkt nach Excel.
Brauchst du nur auspacken, kein Assembler, kein C/C++, keine Windows
Programmierung...
Thomas schrieb:> Dabei ist absolut überhaupt rein gar nichts über die Anforderungen> bekannt:> * Was genau soll damit gemacht werden?> * Wer ist der Anwender?> * Wie ist die Umgebung?> * Welche Stückzahlen werden benötigt?> * Technische Anforderungen an Auflösung, Frequenz, Messbereich?
Das hatte ich in Kurzform schon mal angeregt im
Beitrag "Re: Wie lange Assemblerprogrammierung IC ADC ?">>> @ berus>>> Zeichne mal eine Skizze mit den nötigen Komponenten und überleg dir, was>>> du davon schon kannst, und was du noch lernen musst.
Denn beim Aufstellen und Ausarbeiten eines Konzeptes würden sich diese
Fragen automatisch ergeben...
Aber ich finde den Ausflug nach Fortran auch ganz interessant... ;-)
Das H-TRONIC Modul gibt es übrigens auch bei:
Reichelt: DES 8-12 USB :: Datenerfassung, 8-Kanal 12-bit USB 37,50 €
Pollin: Bestellnummer: 810 169 37,50 €
Oder wie Thomas bereits schrieb: ein Digitalmultimeter mit USB tut es
auch.
Hallo Leute,
ich melde mich wieder zu Wort. Ich habe mir das AVR-GCC-Tutorial
durchgelesen. Jeder, der meinte, ich sole zuerst das durchlesen bevor
ich hier Fragen poste, hatte Recht. Das Tutorial ist sehr hilfreich,
leicht verstaendlich und beantwortet alle Einsteigerfragen. Hier einen
grossen Dank an dessen Autor.
Frage 0: Was bedeutet GCC?
Ich habe mir die Arduino Angebote angesehen. Die sind zwar
nutzerfreundllich und zwechkdienlich, aber sie sind mit zu teuer. Das
billigste Bauteil kostet - meinen Recherchen zu Folge - 25 Euro.
Ausserdem haben sie mehr Fuktionen als mir lieb ist. Ich brauche
naemlich nur einen ADC.
Dennoch Danke fuer den Fingerzeig auf diese Produkte. Es koennte sein,
dass ich sie irgenwann brauchen werde.
Thomas schrieb:
1 Was genau soll damit gemacht werden?
2 Wer ist der Anwender?
3 Wie ist die Umgebung?
4 Welche Stückzahlen werden benötigt?
5 Technische Anforderungen an Auflösung, Frequenz, Messbereich?
Diese Fragen moeche ich jetzt beantowrten, da das zielfuehrend ist.
zu 1. Ich moechte die analogen Signale einer UV-Diode auf dem PC
moeglichst auslesen lassen {am besten in Excel}. Das sollte mindestens
in einer Tabeller dargestellt warden.
zu 2. Ich
zu 3. Laborbedingungen
zu 4. einmalig
zu 5. Ich gehe jetzt davon aus, dass der Messbereich der
Eingangsspannung des analogen Signal bei 2,56 V liegen soll und ich
somit eine Aufloesung von 0,0025 V bewerkstelligen kann.
Frequenzbereich kann ich nicht mit Sicherheit sage, vlt. 1-10 kHz.
Allerdings Weiss ich nicht, ob das bei UV-Strahlen viel Sinn macht.
Nun weiter:
Demjenigen, der behauptet hat, ich soll bei C++ Programmierung bleiben,
wenn ich es ansatzweise kann, gebe ich jetzt Recht. Ganz gemaess der
Devise: <<Schuster bleib bei deinen Leisten>>.
Auch das H-Tronic Modul ist mir zu teuer. Siehe Transitivitaet :}.
Ich moechte mir den ICmega8-USB
{http://shop.in-circuit.de/pages/19/-C-Module} bestellen. Der liegt in
meinem Budget Rahmen. Ausserdem kann ich den mit AVR Studio
programmieren, das ja einen Compiler fuer C++ bereitstellt.
Frage 1: Reicht ein EEPROM von 0.5 kB. Das scheint mir wenig, auch wenn
ich nur ein Programm fuer die AD-Wandlung schreiben moechte.
Frage 2: Was beutet TQFP, QFN/ML und PDIP in Bezug auf einen ADW
Ich blicke noch nicht ganz durch, was das COM anbetrifft.
Frage 3: Hat die Verwendung von COM einen Einfluss auf das Programmieren
des IC in C++?
Frage 4: Ist jedes Terminalprogramm an jedem COM anwendbar?
Besten Dank
Berus
@Claude Juncker (berus)
>Frage 0: Was bedeutet GCC?
Das ist der Name des Compilers.
>Ausserdem haben sie mehr Fuktionen als mir lieb ist. Ich brauche>naemlich nur einen ADC.
Dann nimm einen nackigen AVR. Den musst du aber noch irgendwo auflöten
und beschalten. Kann man machen, ist aber eine weitere Fehlerquelle für
Anfänger.
>zu 1. Ich moechte die analogen Signale einer UV-Diode auf dem PC>moeglichst auslesen lassen {am besten in Excel}. Das sollte mindestens>in einer Tabeller dargestellt warden.
Einfach. Das kann aber auch ein käufliches Multimeter mit RS232 oder USB
Anschluss und man muss nix bauen. Kostet aber ein paar Euro.
>zu 2. Ich>zu 3. Laborbedingungen>zu 4. einmalig>zu 5. Ich gehe jetzt davon aus, dass der Messbereich der>Eingangsspannung des analogen Signal bei 2,56 V liegen soll und ich>somit eine Aufloesung von 0,0025 V bewerkstelligen kann.
Klingt so, als ob die eine Kennlinie oder ähnlichs messen willst. Mein
Tipp. Vergiss die Bastelei und muss mit einem Multimeter manuell. Das
kostet deutlich weniger Zeit und Aufwand.
>Frequenzbereich kann ich nicht mit Sicherheit sage, vlt. 1-10 kHz.>Allerdings Weiss ich nicht, ob das bei UV-Strahlen viel Sinn macht.
;-)
Ist die UV-Strahlung konstant oder von der Quelle moduliert?
>Frage 1: Reicht ein EEPROM von 0.5 kB. Das scheint mir wenig, auch wenn>ich nur ein Programm fuer die AD-Wandlung schreiben moechte.
Du brauchst es nicht.
>Frage 2: Was beutet TQFP, QFN/ML und PDIP in Bezug auf einen ADW
Das sind die Gehäuseformen, hat mit dem ADC nichts zu tun.
>Frage 3: Hat die Verwendung von COM einen Einfluss auf das Programmieren>des IC in C++?
Nein.
>Frage 4: Ist jedes Terminalprogramm an jedem COM anwendbar?
Ja.
> Ich habe mir die Arduino Angebote angesehen. Die sind> zwar nutzerfreundllich und zwechkdienlich, aber sie sind mit zu teuer.> Das billigste Bauteil kostet - meinen Recherchen zu Folge - 25 Euro.> Ausserdem haben sie mehr Fuktionen als mir lieb ist. Ich brauche> naemlich nur einen ADC.
Und?
In den 5 Tagen, die du bist jetzt verplempert hast, hast du schon mehr
Geld in Form von Zeit verbraten, als dir der Arduino gekostet hätte. Und
weitergebracht hast du auch noch nichts.
25 Euro ist nicht viel, wenn man bedenkt was du dafür kriegst. Wenn man
kostenwahr kalkuliert, dann kommst du mit praktisch allen anderen
Methoden auf einen höheren Endpreis. Oder hast du schon eine Platine
gefertigt? Hast du schon einen Programmer im Haus? Hast du schon die
Bauteile eingekauft, Lötzinn und Lötkolben angeschafft?
> <<Schuster bleib bei deinen Leisten>>
deineM, M nicht N. Das hat nichts mit Holzleisten zu tun, die man an die
Wand nagelt. Die Form, mit deren Hilfe der Schuster einen Schuh aufbaut,
das Oberleder in die zum Fuss passende Form zieht und mit der Sohle
verleimt, nagelt oder vernäht, heißt 'der Leisten'. Einzahl und
männlich.
Hallo Falk,
zunaechst Danke fuer deine Antworten.
Wieviel kostet ein Multimeter wie du es dir vorstellst. So etwas ist im
Internet nicht einfach zu finden.
Die UV-Strahlung variiert.
Berus
@Karl Heinz Buechegger:
du haettest nicht ausfallend warden muessen. Ausserdem steht es dir
nicht zu meine Leistung zu beurteilen. Du kannst gar nicht wissen, was
ich in den fuenft Tagen alles zu tun hatte und geschafft habe. Mit
solchen Anschuldigungen waere ich an deiner Stelle vorsichtig.
Berus
@Karl Heinz Buechegger:
wie soll ich mit den Multimetern, fuer die du einen Link angegeben hast,
die Intensitaet der UV-Strahlen aufzeichnen koennen? Soweit ich die
entprechenden Datenblaetter richtig verstanden habe, ist das nicht ohne
Weiteres moeglich.
Soll ich etwa einen Sensor an das Multimeter schliessen?
Gruss
Berus
Claude Juncker schrieb:> Ich habe mir die Arduino Angebote angesehen. Die sind zwar> nutzerfreundllich und zwechkdienlich, aber sie sind mit zu teuer. Das> billigste Bauteil kostet - meinen Recherchen zu Folge - 25 Euro.> Ausserdem haben sie mehr Fuktionen als mir lieb ist. Ich brauche> naemlich nur einen ADC.http://shop.cboden.de/Digispark/Digispark-USB-Entwicklungs-Board.html
kann über die Arduino IDE programmiert werden, hat einen ADC an Board
und noch ein paar Pins extra. und kostet nicht ganz 9 Euro. Sollte für
Deine Bedürfnisse vollkommen ausreichen.
Karl Heinz Buchegger schrieb:>> <<Schuster bleib bei deinen Leisten>>>> deineM, M nicht N. Das hat nichts mit Holzleisten zu tun, die man an die> Wand nagelt. Die Form, mit deren Hilfe der Schuster einen SChuh aufbaut,> das Oberleder in die zum Fuss passende Form zieht und mit der Sohle> verleimt, nagelt oder vernäht, heißt 'der Leisten'. Einzahl und> männlich.
Und was ist, wenn der Schuster mehrere dieser Leisten sein Eigen nennt,
bspw. einen für den linken und einen für den rechten Schuh? Dann wäre es
doch unsinnig zu sagen, er solle nur bei einem der beiden bleiben :)
SCNR
@Claude Juncker:
Hier noch zwei Beispiele für Fertigmodule (falls die nicht schon
gepostet worden sind):
http://www.pollin.de/shop/dt/NjI5OTgxOTk-/Bausaetze_Module/Bausaetze/AVR_NET_IO_Fertigmodul.htmlhttp://numato.com/8-channel-usb-gpio-module
Da musst du, wenn überhaupt, nur noch das Gegenstück auf PC-Seite
programmieren, aber das kannst du ja bereits.
Claude Juncker schrieb:> @Karl Heinz Buechegger:>> wie soll ich mit den Multimetern, fuer die du einen Link angegeben hast,> die Intensitaet der UV-Strahlen aufzeichnen koennen? Soweit ich die> entprechenden Datenblaetter richtig verstanden habe, ist das nicht ohne> Weiteres moeglich.>> Soll ich etwa einen Sensor an das Multimeter schliessen?
Kann es sein, dass du 0, in Worten NULL, Ahnung von Elektronik hast?
Mit deiner Photodiode musst du sowieso erst mal was machen, damit sich
die Helligkeit in einer variierenden Spannung niederschlägt. Das musst
du machen, egal ob du jetzt einen µC mit einem ADC hast, oder ob du ein
Multimeter mit USB-Anschluss hast. Das einzige was dir das Multimeter
abnimmt: Es übernimmt den Teil, den der µC bei der ganzen Sache spielt
und du hast bereits fertige Software, mit der du die gemessenen
Spannungen auf den PC kriegst ohne dass du selbst programmieren musst.
Wenn dir vorschwebt, dass du ein fertiges Gerät findest, bei dem du
ausser eine Photodiode an 2 Leitungen anschliessen nichts tun brauchst,
dann hast du mit Zitronen gehandelt. Zumindest Photodiode samt
Widerstand um einen Spannungsteiler zu bilden und eine
Spannungsversorgung für das ganze, brauchst du da wie dort.
Claude Juncker schrieb:> @Falk:>> Woher soll ich das denn bitte vor der Messung wissen?
Was willst du denn messen?
Wer erzeugt denn das UV-Licht?
Reden wir von Nanosekunden, Millisekunden, Sekunden oder gar Minuten in
denen die Helligkeit variiert?
Wenigstens eine ungefähre Vorstellung wirst du ja wohl haben, in welchen
Zeitintervallen die Quelle ihre Intensität verändert.
Bei deinen Anforderungen kommt eigentlich eine Eigenentwicklung nicht in
Frage.
Ist das privat oder geschäftlich?
Habt ihr kein Oszilloskop?
Wie seid denn ihr ausgestattet?
Hast du keine Kollegen die etwas mehr Ahnung davon haben?
Wenn geschäftlich, dann scheiß auf die Kohle und stattet euch erstmal
vernünftig aus.
Aber Vorsicht, kauf nicht einfach blind eines der verlinkten Geräte.
Die meisten dürften fette Eingangsfilter haben und an deinen
Frequenzanforderungen (1-10kHz) scheitern.
@ Claude Juncker (berus)
>Woher soll ich das denn bitte vor der Messung wissen?
Nun, man hat zumindest ein VORSTELLUNG des Messbeeichs. Denn es ist ein
"kleiner" Untschied, ob man Mondschein oder Mittagssonne messen will.
Du bist entweder ein Troll oder ein 200% Akademiker.
hallo Leute,
@ Karl Hein Buchegger: Bist du heute mit dem falschen Fuss aufgestanden
oder warum kommst du mir ein wenig agressiv vor? Wenn ich dir zu dumm
bin, dann kannst du das Posten in diesem Thread auch unterlassen.
Niemand zwingt dich zum posten.
Dennoch akzeptiere ich deine vorgeschlagene Alternative zur UV-Diode.
Nach meiner Berechnung ist es aber teurer als das Verfahren mit dem IC.
Ich nehme an, dass sich die Intensitaet der UV-Strahlen
mikrosekundenweise aendern.
@ Yalu X.: deine Links gefallen mir. Die sehe ich mir gleich mal genauer
an. Danke
Noch eine Frage zur IC-Programmierung. Stelle ich die Abtastrate ueber
ADPS0, ADPS1 und ADPS2 IM adcsra, sprich Vorteiler, ein?
Berus
@ Karl Heinz Buchegger (kbuchegg) (Moderator)
>Wenn dir vorschwebt, dass du ein fertiges Gerät findest, bei dem du>ausser eine Photodiode an 2 Leitungen anschliessen nichts tun brauchst,>dann hast du mit Zitronen gehandelt. Zumindest Photodiode samt>Widerstand um einen Spannungsteiler zu bilden und eine>Spannungsversorgung für das ganze, brauchst du da wie dort.
Nö. Es reicht, die Photodiode an das Multimeter im passenden
Strommessbereich anzuschließen, damit misst man recht einfach und genau
den Photostrom im (nahezu) Kurzschlussbetrieb. Damit kann man schon
einiges messen, über mehrere Dekaden hinweg. Ein professionelles Gerät
ersetzt es freilich nicht ;-)
@Thomas:
ich soll das im Rahmen eines Uni-Projektes durchfuehren. Deshalb muss
ich beim Einkaufen der Komponenten zum Aufbauen der Messkette auf das
Budget achten.
Ich habe keinen Kollegen, der mehr Weiss als ich. Ich habe auc kein
Schwingungsmesser und ich bin schlecht bzw. noch gar nicht ausgestattet.
Berus
Falk Brunner schrieb:> Nö. Es reicht, die Photodiode an das Multimeter im passenden> Strommessbereich anzuschließen, damit misst man recht einfach und genau> den Photostrom im (nahezu) Kurzschlussbetrieb. Damit kann man schon> einiges messen, über mehrere Dekaden hinweg.
Ah. wusste nicht, das das geht. Wieder was gelernt. Merci vielmals.
Falk Brunner schrieb:>>Frage 2: Was beutet TQFP, QFN/ML und PDIP in Bezug auf einen ADW>> Das sind die Gehäuseformen, hat mit dem ADC nichts zu tun.
Doch. !DipAdcEingänge = DipAdcEingänge + 2
Das läuft doch wieder auf Atmega8 hinaus oder?
@TO:
Chinesische Arduinos gibt es in der Bucht für'n Zehner.
mfg.
facialpalmier
Also entweder Du bist nicht in der Lage Deinem
Betreuer/Prof/Ansprechpartner zu erklären was Du für Deine Messung
brauchst oder Du bist mit dem Thema das Dir gegeben wurde schlicht
überfordert.
Wenn es an der UNI ist sollst Du daraus etwas lernen, z.B. selbständiges
Arbeiten und Erfassung von Notwendigkeiten.
Mir ist keine UNI bekannt wo die Voraussetzungen für ein Experiment
nicht erkannt und entsprechnde Austattung angeschafft werden.
Sollte es eine Praktikumsarbeit oder gar Diplom sein bist Du selber
gefragt und wenn dann etwas fehlt hast Du Deine Ansprechpartner.
Also was genau ist Deine Aufgabenstellung und was GENAU fehlt Dir an
Ausrüstung und WARUM tut es das ?
Falk Brunner schrieb:>> Frage 2: Was beutet TQFP, QFN/ML und PDIP in Bezug auf einen ADW>> Das sind die Gehäuseformen, hat mit dem ADC nichts zu tun.
Doch, beim ATmega8 schon: in den nicht-DIP-Varianten hat man
zwei ADC-Kanäle mehr zur Verfügung, bei den Nachfolgern ATmega88 und
Verwandten ebenfalls. Das 28-polige DIP hat einfach zu wenig Pins,
sodass ADC6 und ADC7 dort nicht gebondet werden können.
Claude Juncker schrieb:> du haettest nicht ausfallend warden muessen. Ausserdem steht es dir> nicht zu meine Leistung zu beurteilen.> Ich habe keinen Kollegen, der mehr Weiss als ich.
Deine Einbildung wird dich zum Scheitern bringen.
Gruss Reinhard
> ich soll das im Rahmen eines Uni-Projektes durchführen.
Ich nehme an du studierst Biologie oder Chemie?
Habt ihr keinen E-Technik Fachbereich?
> Ich habe keinen Kollegen, der mehr weiß als ich.
Dann solltest du an deiner Kommunikationsfähigkeit arbeiten.
> Ich habe auch kein Schwingungsmesser
Es gibt in DE keine Bildungseinrichtung ohne Oszilloskop.
Selbst in der theologischen Fakultät hier in Paderborn steht irgendwo
eins rum.
Mag ja sein, dass bei euch im Labor keins steht, aber die anderen Labore
/ Fachbereiche haben bestimmt was da.
Und wenn du höflich und gut vorbereitet bist, dann lassen sie dich
sicher auch mal ran.
Und wenn du sogar nett und sympatisch bist, dann nimmt sich sicher auch
mal jemand Zeit für dich um dir den Messaufbau und ein paar Grundlagen
zu erklären.
Das kostet dich maximal ein Stück Kuchen in der Mensa.
Ich verstehe es echt nicht, wie man an einer UNI so ein Projekt
bekommt/annimmt und man von Tuten und Blasen keine Ahnung hat.
Was studierst du denn? Doch bestimmt nicht Philosophie oder
Kirchenmusik.
@Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
>Verwandten ebenfalls. Das 28-polige DIP hat einfach zu wenig Pins,>sodass ADC6 und ADC7 dort nicht gebondet werden können.
Das ist das kleinste Problem des OPs ;-)
Hallo Leute,
Ich schliesse hiermit den Thread bzw. antworte hier nicht mehr auf
Beitraege, weil ich das Gefuehl habe, dass einige wenige, die nicht mal
den ganzen thread verfolgt haben, einfach nur des Schreiben willens
schreiben.
Allen anderen, und das ist die Mehrheit, danke ich fuer konstruktive
Hilfe und Vorschlaege.
Beste Gruesse
Berus