Schau mal hier ...
https://www.roboternetz.de/phpBB2/se...p?mode=results
Hallo,
ich möchte ein paar Messwerte (Spannung, Strom, Temperatur; el. Signale sind vorhanden) per Funk an einen PC übertragen, um sie dort weiter zu verarbeiten (z.B. el. Leistung berechnen).
Da ich in diesem Gebiet bisher keine Erfahrungen habe (studiere Energietechnik), würde ich gerne wissen, mit welchem Aufwand dies verbunden ist und wo ich mich diesbezüglich schlau machen kann.
Ich würde mich riesig freuen, wenn mir jemand ein paar Tipps oder sogar eine Bauanleitung geben könnte.
Gruß,
evolvente
Schau mal hier ...
https://www.roboternetz.de/phpBB2/se...p?mode=results
@ruediw
vielleicht korrigierst Du den Link mal, ich kann dort nichts Informatives sehen.
Danke.
MfG Karl-Heinz
HobbyElektronik hier klicken ....
Hi,
ein Mega32 AVR Controller hat 32 zB. IOs.
Es können also zB. 8 Analoge Werte und 22 digitale Werte "gleichzeitig" verarbeitet werden.
(Wenn man die analogen Werte und die Schnittstelle wegläßt sind's eben 32).
Mit der internen seriellen Schnittstelle (UART) und einem Pegelwandler kann man dann prima Daten zum PC senden.
Kommt drauf an, wie die Signale vorhanden sind.
Für die jeweiligen Eingangsgrößen müssten dann noch Anpassungen gemacht werden um die Eingangssignale auf die für den AVR zulässigen und sinnvollen Pegel zu bringen.
Das Programm für den Mikrocontroller kann man dann zB. in Basic schreiben.
BASCOM-AVR hat sich als Basic-Compiler durchgesetzt und ist in einer Demoversion (auf 4K Code beschränkt) erhältlich. (www.mcselec.com)
Für deine Zwecke dürfte die Demo sogar komplett ausreichen.
Kommt halt immer drauf an, wie kompliziert das ganze werden soll.
Einfach 3 Analogwerte an den PC zu übertragen ist in Bascom mit wenigen Code-Zeilen erledigt.
Wenn's dann über Funk gehen soll, wird's eventuell etwas komplizierter.
Kannst ja mal nach "Manchester Code" suchen.
Oder du verwendest komplette Funkmodule mit integriertem Protokoll, wie zB. die Easy Radio Module.
http://www.shop.robotikhardware.de/s...products_id=70
Damit sparst du dir das schreiben eines funktauglichen Protokolls und bleibst bei wenigen Codezeilen.
Ein LCD Display am Controller zu integrieren ist auch kein Problem.
Mit ein paar Codezeilen mehr kannst du dir die Messwerte dann auch vor Ort angucken.
Ist auch ganz nett um sein Programm zu debuggen.
LCD Displays gibt's unter 10 Euro.
Die Ansteuerung ist meist problemlos mit Bascom zu machen.
Es kommt auch drauf an, wie weit die Signale übertragen werden müssen.
Wenn's weiter als 200-300 Meter sein soll, dann wird's teurer.
Gruß
Christopher
Die elektrischen Signale Möchte ich von vorhandenen Messgeräten (Dreheisen- und Drehspulmessgeräte) abgreifen. Dass die Pegel noch angepasst werden müssen dachte ich mir schon, aber das ist ja weniger das Problem. Weiter als 200m sollen die Signale auch nicht gesendet werden.
Protokolle wollte ich nicht erst definieren, bzw. programmieren. Ich dachte da an eine simple Lösung wie: Controller (Eingang der Signale) -> Funkmodul -> Empfänger -> PC
Mit der Programmierung müsste ich mich dann auch nochmal beschäftigen (habe nur sehr spartanische JAVA Grundkenntnisse)
Wie gesagt, ich habe da fast keinen Plan von, aber ich bin bereit, mich da reinzuarbeiten.
Hi,
hier mal ein schnell in ein paar Minuten geschriebener Code, der AD/Werte ausliest und über die serielle Schnittstelle sendet (ohne Schönheitsgarantie ) :
Code:$regfile = "M32DEF.DAT" 'Controller ist ein Mega32 $crystal = 16000000 'mit 16 MHz Baud = 9600 'serielle Schnittstelle initialisieren mit 9600,n,8,1 Config Adc = Single , Prescaler = Auto 'AD Wandler Konfigurieren Dim Temperatur As Integer 'Werte dimensionieren Dim Spannung As Integer Dim Strom As Integer Dim Ausgabe As String * 5 Dim Sendestring As String * 40 Start Adc 'AD-Wandler starten Do Temperatur = Getadc(0) 'Werte vom AD-Wandler holen Spannung = Getadc(1) Strom = Getadc(2) Gosub Werte_berechnen Gosub Werte_ausgeben Loop End Werte_ausgeben: Ausgabe = Str(temperatur) 'Wert in String umwandeln Ausgabe = Format(ausgabe , "+0000") 'String formatieren inkl. Vorzeichen Sendestring = "Temperatur = " + Ausgabe + " Grad" 'Beschreibung dazu Print Sendestring 'senden und cr/lf anhängen Ausgabe = Str(spannung) Ausgabe = Format(ausgabe , "+0000") Sendestring = "Spannung = " + Ausgabe + " Volt" Print Sendestring Ausgabe = Str(strom) Ausgabe = Format(ausgabe , "+0000") Sendestring = "Strom = " + Ausgabe + " Ampere" Print Sendestring Return Werte_berechnen: 'Hier kann man dann noch die Werte "mundgerecht aufarbeiten" Return
Bascom hat übrigens auch einen eigenen Simulator.
Da kann man sowas prima testen
Das Prog. beötigt übrigens 3% des Programmspeichers im Chip
Kleiner uns hübscher geht's auch, aber ist eben schnell zusammengefummelt..
Wenn du dann noch ein LCD Display dranhängen willst, sind's nochmal etwa 10 Zeilen mehr.
Also alles nicht so schwer und kompliziert..
Ist halt ein riesen Vorteil von Basic.
Hier mal ein Codevergleich von verschiedenen Programmiersprachen für die AVRs :
https://www.roboternetz.de/wissen/in...ourcevergleich
Gruß
Christopher
Wenn Du Assembler kannst / magst, gibt es auch für PIC-Controller Beispiele, wo ebenfalls der AD-Wandler ausgelesen wird und wo eine Kommunikation mit einer RS232-Schnittstelle mit Ringpuffer für senden und empfangen zu Verfügung steht (und natürlich noch mehr). Das Ganze befindet sich unter: http://www.domnick-elektronik.de/picasm.htm.
Dann gibt es bei sprut.de noch viele Informationen zu Hard- und Software von PIC's.
MfG Karl-Heinz
HobbyElektronik hier klicken ....
Hallo evolvente,
wie liegen denn deine Daten überhaupt vor? Drehspulmessgeräte liefern eine Zeigerauschlag, also ein mechanisches Ergebnis. Willst du die Zeigerstellung optisch erfassen? ( kleiner Scherz!)
Willst du direkt Spannungen o.ä. messen? Haben deine Messgeräte vielleicht schon einen digitalen Ausgang? Vielleicht sogar RS232C?
Mit welcher Datenrate rechnest du? Wie hoch soll die Genauigkeit sein?
Wenn du bereits weißt, wie du Daten auf einen uC bekommst, ist es am einfachsten, du benutzt zur Übertragung ein Funkmodul mit seriellem Interface (aber nicht die billigen von 'C' für ca. 15€).
Gruß Red Baron
Hmm, optische Erfassung mit einer Kamera, auch ne Idee...
Nein, ich wollte die analogen Signale direkt von den Messgeräten abgreifen. Für jeden Messwert steht ein Spannung bereit (schon gemessen). Nur die Pegel müsste man noch angleichen (wie gesagt, das ist weniger das Problem).
Ich verstehe jetzt nur noch nicht, wie ich die Werte vom Controller zum Funkmodul bekomme. Das Programmbeispiel von chr-mt scheint ja nur die Werte im Terminalclient auszuspucken.
So langsam wird alles aber ein bißchen klarer.
Hi,
wenn du ein Funkmodul mit integriertem Protokoll nimmst, brauchst du den TXD Ausgang des Controllers nur an den Eingangspin des Funkmoduls anzuschließen.Ich verstehe jetzt nur noch nicht, wie ich die Werte vom Controller zum Funkmodul bekomme
Am PC schließt du dann den Empfänger über einen RS232 Pegelwandler (zB. MAX232) an. Das war's dann auch schon.
Die ankommenden Daten kannst du am PC natürlich noch aufbereiten.
Wenn du das Ganze bidirektional machen willst, wird es natürlich wieder etwas aufwändiger.
Gruß
Christopher
Lesezeichen