Datenerfassung

Ladeelektronik, Messgeräte, Steuerungen etc.

Re: Datenerfassung

Beitragvon jb79 » Do 7. Mai 2009, 00:51

Gibt mal wieder einen kleinen Zwischenbericht, falls das hier überhaupt jemand ließt?!?. Beeeeernd?

Die RS232 Schnittstelle funkt nun wieder wenn das Menü aktiv ist. Die mülligen Werte kamen daher, daß die Zahlen die am Display angezeigt werden und auch auf die RS232 Schnittstelle geschrieben werden von Unterprogrammen errechnet werden die beim Aktivsein des Menüs deaktiviert werden (sonst würde am Display Müll stehen...). Hab diese Unterprogramme nun so umgeschrieben (und nebenbei gleich eines löschen können), daß sie die Werte für die RS232 Schnittstelle trotzdem berechnen, sie aber bei aktivem Menü nicht anzeigen.

Dann hab ich jetzt noch mit der Maximalwertanzeige begonnen, diese kann entweder mit RAM Werten arbeiten, oder die Werte verwenden, die im EEPROM gespeichert werden. Soll heißen: wenn der Wert im EEPROM kleiner ist als der aktuelle Wert, dann wird der aktuelle Wert ins EEPROM geschrieben und bleibt aktiv bis man den PIC neu beschreibt. Die RAM Werte werden automatisch gelöscht wenn mal der Reset gedrückt wird oder man den Strom wegnimmt = Reset.

Derzeit kann ich nur Werte aus dem EEPROM lesen, allerdings blieb das Display vorerst leer. Hab im Debugmodus der Software mal geschaut, konnte aber nix feststellen, die Werte wurden korrekt in die entsprechenden RAM Register (diese stehen aus Platzmangel schon in einer anderen RAM Speicherbank) geschrieben. Dann ist mir das aus dem 1. Absatz wieder eingefallen, benutze nämlich zum Anzeigen der Maximalwerte die selben Unterprogramme wie bei den aktuellen Werten. Die blockieren aber die Ausgabe am Display wenn das Menü aktiv ist. :oops: Also schnell 2 Zeilen am Anfang und Ende des Maximalwertanzeigeprogramms rein und siehe da: es zeigt endlich die Werte an. :mrgreen:

Nächster Schritt ist jetzt, wie ich am besten die Maximalwerte mit den aktuellen Werten vergleiche und bei einer Überschreitung des Maximalwertes diesen erhöhe. Da es 2 Werte mit je 2 Byte (16Bit) sind, könnte ich das mit einer 16Bit Subtraktion (Maximalwert-aktueller Wert) erschlagen. Kommt da nämlich was Negatives dabei raus, so wird bei der von mir schon im Programm verwendeten Routine ein Bit gesetzt. Dann schnell das Bit abfragen, wenn das 1 ist den aktuellen Wert ins EEPROM schreiben. Eigentlich ganz einfach, wenn nur nicht die ganzen Werte in unterschiedlichsten RAM Registern liegen würden und die Programme ganz bestimmte Registernamen brauchen, das kann beim Hin- und Herkopieren schon recht verwirrend sein. :?
Nebenbei muß ich dann noch abfragen, ob die Speicherung im EEPROM überhaupt erwünscht ist, sonst dürfen die Werte nämlich nur in den entsprechenden RAM Registern landen.

Außerdem ist noch das korrekte Setting der RS232 Schnittstelle notwendig, das hab ich inzwischen auch in ein Unterprogramm ausgesiedelt um auch zur Laufzeit (ohne Reset) eine Änderung vornehmen zu können. Derzeit funkt leider nur eine Übertragung mit 19,2kBit.

Folgende Bugs und Features sind derzeit also noch offen und in Planung:
1.) Baudrateneinstellung - Bug fixed 08.05.2009, man kann derzeit wählen zwischen 2,4k, 9,6k und 19,2k. Mehr dazu: hier.
2.) Einstellung der Impulse/Sekunde - Feature done 10.05.2009, man kann derzeit wählen zwischen 1, 2, 4, 8, 16 und 14 Impulsen/Sekunde Mehr dazu: hier.
3.) Windmeßgerät und Erfassung der Daten - Feature (da müßte was fertiges oder einfach zu bauendes dran, das optimalerweise eine zur Windstärke lineare Spannung liefert) - Feature
4.) Maximalwertspeicherung - Feature done 21.06.2009, Daten im RAM werden schon korrekt gespeichert, es gibt aber mit der Speicherung im EEPROM noch Probleme, ein bißchen Feintuning für die Stabilität ist auch noch notwendig. Mehr dazu: hier
5.) Reset der Maximalwerte (RAM, EEPROM) => eigener Menüpunkt :) - Feature (ist mir gerade eingefallen) - done 11.05.2009, im RAM oder EEPROM gespeicherte Maximalwerte löschen. Mehr dazu: hier.
6.) Wertspeicherung in externes EEPROM - Feature (möglicherweise wegen 7. nicht nötig)
7.) Werteweiterleitung per WRT54GL - Feature (mit den Programmierern schon in Kontakt, dauert aber ebenfalls noch)
8.) Schaltreglerfunktionalität - Feature (wird noch länger dauern), Eventuell wäre es besser einen zweiten PIC dafür abzustellen der sich nur darum kümmert. Genug Speicher und Pins wären eigentlich schon noch im jetzigen PIC frei, mal sehen...
9.) Mal einen Schaltplan für das Ganze zeichnen und ne Print machen - Feature, die reine Meßwerterfassung läßt sich (ohne Display) sicher auf einer Platine mit der Größe von maximal einer halben Europaplatine(100x160mm), also so 100x80mm unterbringen. So groß sind derzeit meine beiden Prints für den Programmer und die Hauptexperimentierplatine. Wenn das fertig ist fällt dort schon mal etwas Platz weg, den der spezielle Schnellverschlußsockel braucht (24x65mm), der PIC im 28-poligen Sockel würde nur auf ca. 10x35mm kommen. Auch diverse Optionen, die mit Jumpern eingestellt werden fallen da weg (Takterzeugung jumperbar, Jumper für RS232, Jumper für externes EEPROM), dann gibts noch diverse Steckverbinder an den Rändern, die man in der Anzahl nicht mehr braucht.
10.) Das Ganze zur Serienreife bringen, damit der Nachbau halbwegs geordnet möglich ist - Feature: Wo kann man die Print günstig herstellen lassen, wo bekommt man die Bauteile her (besonders Displays und Tastatur müssen von der Anschlußbelegung gleich sein, welche unterschiedlichen Hardwarevarianten (maximale Spannung, maximaler Strom) gibt es, wer programmiert die PICs (könnte ich machen), welche Settings sollen "ab Werk" drinnen sein, Optimierung des Stromverbrauchs (PIC und Peripherie evtl. "schlafenlegen", z.B. auch bei Wind wo eh keine Leistung erzeugt werden kann)
11.) Deaktivierung des RS232-Chips (Pegelanpassung per Max232) und einer eventuell vorhandenen Displaybleuchtung per Menü (RS232 Menü und extra Menü für die Displaybeleuchtung). - Feature done 14.06.2009. Mehr dazu: hier.

Folgende Dinge funktionieren schon:
1.) Anzeige der aktuellen Spannungs-, Stom-, Leistungs- Drehzahl und Windgeschwindigkeitswerte incl. Aktivitätsanzeige (blinkender Stern am Ende der 1. Zeile) auf einem zweizeiligen LCD Display mit mind 20 Zeichen/Zeile (verwende derzeit eines mit 2x24Zeichen), Meßbereichsumschaltung in der Anzeige, je nach gewähltem Meßbereich (vorerst testweise für die Strommessung) - 17.05.2009
2.) Anzeige von Maximalwerten, in flüchtigem Speicher (RAM) oder nichtflüchtigem Speicher (EEPROM) abgelegt - über Menü wählbar
3.) Menü, das über ein Tastenfeld (0-9, *, #) bedient werden kann (*: weiter zum nächsten Menüpunkt, #: Wert speichern, 0: Menü verlassen, zurück zur Anzeige der aktuellen Meßwerte), im Menü kann man die Maximalwerte ansehen und diverse Multiplikatoren (Strom, Spannung, Impulse), sowie die RS232 Settings und den Speicherort der Maximalwerte festlegen. Außerdem gibts einen kleinen Displaytest.
4.) Glättung der Werte durch Mittelwertbildung (3x aktueller Wert + 1x letzter Wert)/4=neuer aktueller Wert. Das glättet Spitzen, die bei der Meßwerterfassung auftreten wenn man genau auf einer Grenze (Bit schwankt zwischen 0 und 1) ist.
5.) Die Werte werden alle 0,5s gemessen, geglättet und am Display (wenn Menü nicht aktiv ist) sowie auf der RS232 Schnittstelle (sofern im Menü aktiviert) ausgegeben, die Werte auf der RS232 Schnittstelle kommen am PC im CSV Format an (durch Strichpunkt getrennt), sind also sehr einfach in Excel auszuwerten.
6.) Bisher ist alles auf Lochraster aufgebaut und mit mehreren 10 poligen Flachbandkabeln verbunden, wirkt aber trotzdem recht stabil. Mir ist bisher nicht aufgefallen daß sich das Ganze mal erhängt hätte, Bluescreen gibts auf nem LCD Display ohnehin keinen. :lol: Das Ganze hängt sich nicht mal auf, wenn ich den Oszillatorquarz entnehme und wieder in den Sockel stecke. Mach das mal einer bei einem PC, der dabei nicht abstürzen soll. Das Schlimmste was dabei passiert ist, daß in der am PC ankommenden Zeile mit Meßwerte eventuell noch ein falsches Zeichen drinnen ist. :roll:
lg Jürgen
jb79
 
Beiträge: 1138
Registriert: Di 10. Feb 2009, 22:24
Wohnort: Niederösterreich

Re: Datenerfassung

Beitragvon windstav » Do 7. Mai 2009, 12:19

Hallo Jürgen,
ich verfolge dein Projektl, aber ich kann nicht sagen, dass ich alles verstehe.
Ich nehme an , dass auch andere auf das Ergebnis gespannt sind.
Auf jeden Fall machst du 'ne Menge Arbeit.

Gruß
Stav
windstav
 
Beiträge: 304
Registriert: Di 24. Mär 2009, 00:19
Wohnort: Athen

Re: Datenerfassung

Beitragvon jb79 » Do 7. Mai 2009, 16:20

Schön, daß es ein paar Leute gibt die den Fortschitt mitverfolgen. Wenn du irgendwelche Fragen hast, etwas nicht verstehst oder eine Anregung hast, was man verbessern könnte, dann nur her damit. Werde schauen was sich machen läßt und evenutelle Fragen so gut wie möglich zu erklären versuchen.
lg Jürgen
jb79
 
Beiträge: 1138
Registriert: Di 10. Feb 2009, 22:24
Wohnort: Niederösterreich

Re: Datenerfassung

Beitragvon Wind_Stefan » Do 7. Mai 2009, 17:03

Hallo Jürgen,

auch ich verfolge dein projekt mit sehr großem interesse, muss aber auch gestehen wie Stav, dass ich nicht alles verstehe.
Freue mich aber jeden abend wenn ich von der arbeit komme hier im forum von den fortschritten zu lesen die du wunderbar dokumentierst.
Bin natürlich auch sehr auf das ergebnis gespannt und hoffe sehr, das es mir gelingt alles funktionsfähig nachzubauen.
Elektronik ist nicht so mein fall. :oops:

Gruß Stefan
Wind_Stefan
 
Beiträge: 76
Registriert: Sa 10. Jan 2009, 15:30

Re: Datenerfassung

Beitragvon jb79 » Do 7. Mai 2009, 18:04

Keine Angst, wenn die Hardware und Software fertig entwickelt ist will ich dann auch ein Platinenlayout machen und das Ganze irgendwo ätzen lassen, dann kann man zumindest mit der Platine schon mal nix falsch machen. Die Schaltung wird wohl größtenteils mit herkömlichen Bauteilen aufgebaut, nur den Spannungsteiler hab ich mit 0,1% SMD Widerständen gebaut weil ich keine so genauen bedrahteten Widerstände bei Conrad gefunden habe. Diese Subprint erfordert aber eigentlich nur eine Pinzette, einen Minilötkolben und eine halbwegs ruhige Hand. Für die Grobmotoriker die sich das nicht zutrauen und gerade so mit normalen Bauteilen zurechtkommen könnte ich diese Subprints natürlich vorfertigen.
War nach 10 Jahren (da hab ich in der Schule mal kurz mit SMD zu tun gehabt) mein erneuter Erstkontakt mit SMD Lötung (damals haben wir das per Reflow Lötung gemacht).
lg Jürgen
jb79
 
Beiträge: 1138
Registriert: Di 10. Feb 2009, 22:24
Wohnort: Niederösterreich

Re: Datenerfassung

Beitragvon gelöscht » Do 7. Mai 2009, 19:16

Muß mich auch als staunender Mitleser outen: mir geht es wie meinen "Vorschreibern", ich lese mit offenem Mund, wüßte aber beim besten Willen nicht, was ich beitragen sollte außer einem "Weiter so!"
Ich weiß gerade mal, welches Ende vom Lötkolben heiß wird, und SMD löten beißt sich vermutlich mit meinem Kaffeekonsum. :shock:
Nach Anleitung tät ich wohl so manches zusammenkriegen, wenn es nicht zuviele Teile hat.
Aber das Projekt ist so wichtig für grundlegende Erkenntnisse! Jeder Windradbauer sollte eins von den Geräten haben, zumindest leihweise (der Kaufpreis wird sicher knapp über 20€ liegen ;) ).
Also, ich halte die Daumen gedrückt, daß der Elan Dich auch mit steigender Komplexität nicht verläßt und Du in ähnlichem Tempo Fortschritte machst!

Grüße, Robert
gelöscht
 
Beiträge: 33
Registriert: Mo 4. Mai 2009, 15:08

Re: Datenerfassung

Beitragvon ... » Do 7. Mai 2009, 19:33

ich verfolge deine Arbeit zimlich genau. Das Tippen von langen Texten liegt mir genau so wenig wie die Rechtschreibung, deswegen halte ich mich eher zurück. Zur zeit baue ich eine sehr ähnliche geschichte wie du. Mein Projekt wird modular damit ich auch andere sachen bauen kann ohne alles neu entwickeln zu müssen.
1. Platine 100mm x 160mm -> sieben Taster und ein 4x20 Zeichen LCD mit LED Beleuchtung angebunden über i²C Bus.
2. Platine 100mm x 80mm -> ATmega32 µC, i²C, RS232, RS485, 8x A/D, 3xPWM, 12xI/O, 1024Byte EEPROM
3. Platine 100x x160mm -> Das ist/wird die Platine für meine Windmühle. Drehzahlmessung, Wind- geschwindigkeit und richtung, vier mal Strom(-20,48A - +20,48A) (LEM) Wandler, und vier mal Spannung (0 - 40,96V). Ich habe/werde von allem ein PDF erstellen welches ich unter anderem auch hier veröffentlichen werden. Und zu Dir erstmal ein großes LOB für das viele Tippen, und viel glück damit es auch fertig wird.
Rechtschreibung war, ist und wird wohl immer eine schwäche von mir sein. Bitte nicht kommentieren!
...
 
Beiträge: 37
Registriert: Mo 13. Apr 2009, 17:21

RS232 - Geschwindigkeitsauswahl funktioniert

Beitragvon jb79 » Fr 8. Mai 2009, 00:47

Hab eben die Baudrateneinstellung so hingebracht, daß man auch im laufenden Betrieb ohne Reset umschalten kann.
Derzeit gibts im Menü folgendes auszuwählen:
2,4k, 9,6k und 19,2k und aus.
Habs auch mit anderen Werten probiert, 1,2k und 2,4k funktionieren auch.
Wollte dann noch niedriger gehen und auch 300Baud testen, nur leider dauert es mit dieser Übertragung viel zu lange bis die Daten am PC sind. Solange ist der PIC damit blockiert. Das hat dann zur Folge, daß die Software nicht innerhalb von 0,5s mit der ganzen Berechnung und Ausgabe auf Display durch ist und dann schon wieder versucht neue Meßwerte zu berechnen. Somit kommt da nur noch Blödsinn aufs Display. :x Eventuell läßt sich das Ganze mit einem zusätzlichem Interrupt lösen, nur dann könnte dieser der Drehzahlmessung dreinpfuschen und somit diese Werte verfälschen. Deswegen laß ich das jetzt lieber mal bleiben und streiche die Entwicklung des absoluten Low-Speed Modus.
Damit gibts nun folgende Wahlmöglichkeiten fürs Menü(3 beliebige Werte aus der Liste kann ich kombinieren): 1,2k, 2,4k, 4,8k, 9,6k und 19,2k.
Hier zur Verdeutlichung mal der Code, mit dem die Baudrate eingestellt wird (man entschuldige die schlechte Schreibweise, mal klein, mal groß):

rs232_init.JPG
RS232 Initialisierungsroutine
rs232_init.JPG (79.08 KiB) 8860-mal betrachtet


Damit ich noch ein bißchen weiterprogrammieren kann an der Maximalwertspeicherung und anderen Dingen hab ich jetzt auch mal ein paar Dinge in die Speicherbank 1 (also die 2. Bank, denn die Zählung beginnt bei Bank 0) verschoben. Darunter fällt die ganze Behandlung des EEPROMs (Lesen, Schreiben sowie viele Routinen die oft auf diese beiden Unterprogramme direkt zugreifen), alle RS232 Ausgaberoutinen und die RS232 Initialisierungsroutine. Damit wird jetzt in Bank 1 wieder dringend benötigter Speicher frei.
Das Bild aus der PIC Brennersoftware verdeutlicht das Ganze ein bißchen: Oben der Inhalt des PICs mit der Software von gestern. Man sieht schön, daß der grüne Bereich schon fast 2 Felder füllt, 1 Feld=1kByte des 8kByte großen Speichers, immer 2 1kByte große Felder bilden dabei eine Speicherbank, in der man sich ohne besondere Sprungbefehle beliebig bewegen kann. Will man jetzt mehr als 2kByte nutzen, so braucht man neben Bank 0 (1. Bank) eine der anderen Speicherbanken. Will man ein Unterprogramm aufrufen, das in einer anderen Bank liegt, so ist das im Code berücksichtigen und vor dem Sprungbefehl auf die entsprechende Bank umzuschalten (1 oder 2 kurze Befehlszeilen, zwischen Bank 0 und 1 reicht aber 1 Befehl=1Bit setzen/löschen).

Im unteren Teil sieht man die aktuelle Speicheraufteilung mit den Unterprogrammen die ich schon in Bank 1 verschoben habe (3. Kästchen von links), damit ist in der ersten Bank jetzt wieder ca. 0,4kByte Platz für Erweiterungen die häufig Unterprogramme aufrufen die sich ebenfalls in Bank 0 befinden. Darunter fällt z.B. die komplette Behandlung des Displays, das braucht ca. die Hälfte!!! von Bank 0.

Zur Erklärung der beiden horizontalen Balken darunter: Das sind die EEPROM Speicherplätze, die auch bei Stromausfall oder Reset ihre Werte sicher beibehalten (laut Datenblatt so bis zu 10 oder 20 Jahre lang :) ). Der erste Block (links) speichert die Settings, die man im Menü vorgenommen hat sowie die für diese Settings zulässigen Maximaleinstellungen. Dann ist ein kleiner Abstand (falls ich noch zusätzliche Settings einbauen will/muß. Danach folgen die Maximalwerte, die die Software gemessen hat. Das sind derzeit Dummywerte, die ich wie die Menü-Default-Settings schon bei jedem neuen Brennen des PIC mitbrenne.

speicheraufteilung.JPG
Derzeitige Speicheraufteilung/Speichernutzung im PIC
speicheraufteilung.JPG (69.25 KiB) 8863-mal betrachtet
lg Jürgen
jb79
 
Beiträge: 1138
Registriert: Di 10. Feb 2009, 22:24
Wohnort: Niederösterreich

Re: Datenerfassung

Beitragvon jb79 » Sa 9. Mai 2009, 00:49

Mußte mich heute mal schnell mit einem anderen Aspekt des Ganzen beschäftigen: Wie bringt man die ganze Hardware auf einer Platine unter?

Nun ja, hab erstmal einen Schaltplan erstellt: :mrgreen:

schaltplan_einiges_fehlt_noch.JPG
schaltplan_einiges_fehlt_noch.JPG (59.95 KiB) 8816-mal betrachtet


Danach kam das Ganze in ein PCB Tool und ich hab (händisch) ein paar Leiterbahnen verlegt.
Das schaut dann in der 3D Ansicht so aus (Leiterbahnen sind da natürlich auch drauf).

platine_einiges_fehlt noch.JPG
platine_einiges_fehlt noch.JPG (48.08 KiB) 8813-mal betrachtet


Aber Vorsicht: das Ganze ist vorerst mal nur ein grober Entwurf, auf dem noch einige Dinge fehlen (Analogeingänge, Impulseingang sowie die Signalverarbeitung).
Die Platine wäre so wie sie hier ist ca. 91,5mm lang und knapp 79mm breit. Da aber noch ein bißchen Platz übrig ist denke ich, daß das trotzdem hinzubekommen ist.

Wer diese Software (Schaltplaneditor und Platinenerstellung) auch haben möchte kann sie sich kostenlos [url=http://iut-tice.ujf-grenoble.fr/cao/
]hier[/url] runterladen. Schön, daß es Leute gibt die viel Arbeit hineinstecken und soetwas dann unter GPL freigeben. :D
Gesaugt hab ich mir das größte File (hat auch den längsten Dateinamen), da ist offenbar schon alles mit drinnen, ein Sorglospaket also.
btw: Habs mir erst am Fr. gegen 23:00 gesaugt und kurz vor 2:00 schon dieses Ergebnis, man kann also sagen daß es fast selbsterklärend ist, auch wenn man manche Dinge ein bißchen suchen muß. Eine derart kurze Eingewöhnungsphase bei einer Software hatte ich eigentlich noch nie.
lg Jürgen
jb79
 
Beiträge: 1138
Registriert: Di 10. Feb 2009, 22:24
Wohnort: Niederösterreich

Drehzahlberechnung aus den Impulsen/s

Beitragvon jb79 » So 10. Mai 2009, 00:11

So, bin bis eben wieder etwas an der Software gesessen und draufgekommen daß ich bei der Impulsberechnung irgendwo nen Hund drinnen habe.
Das ist mir deshalb aufgefallen weil ich das mit den Settings für die Impulse eingebaut habe und bei der Berechnung von 16 Impulsen/s nur etwa 1/5 des Wertes rausgekommen ist der bei 14Impulsen/s (der Wert mit dem ich bisher gearbeitet habe) am Display stand.
Bin jetzt draufgekommen daß ich dort erstmal die Multiplikation mit 2 verschlampt habe und dann eigentlich auf einem Faktor 10 gekommen wäre => das Ganze um 1 Kommastelle am Display verschieben.
Der Faktor 14 wird jetzt so berechnet: Drehzahl=(Impulsanzahl*2*60s)/Impulse je Sekunde, das ergibt bei 14 Impulsen/s: Drehzahl=Impulszahl (Impulse in 0,5s, darum Faktor2)*120/14= Impulszahl*8,57. Am Pic läßt sich das so berechnen: Drehzahl=Impulszahl*8+Impulszahl/2 (=0,5*Impulszahl). Damit kommt man recht genau hin, muß noch schaun, ob ich das irgendwie noch genauer errechnen kann.

Jetzt rechnet die Software jedenfalls mal bis auf die kleine Ungenauigkeit die korrekte Drehzahl aus, was auch im Menü entsprechend eingestellt werden kann.
Für andere krumme Werte (14 ist der Wert den ich von Bend für den Nabendynamo erhalten habe) muß natürlich ein eigenes Unterprogramm ran, ideal sind auf jeden Fall Vielfache von 2, die kann man per PIC sehr genau berechnen.

Als nächstes nehm ich mir mal die Maximalwertspeicherung vor, das wird ein aufwändigeres Kapitel
lg Jürgen
jb79
 
Beiträge: 1138
Registriert: Di 10. Feb 2009, 22:24
Wohnort: Niederösterreich

VorherigeNächste

Zurück zu Elektronik für Windkraftanlagen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste