Ich will einen AVR benutzen, um zwecks Reflow löten einen Pizzaofen zu
steuern. Dazu benutze ich einen Pro Micro (Arduino Leonardo). Er misst
die Temperatur und steuert das Heizrelais. Die Hardware funktioniert
soweit.
Per serieller Schnittstelle soll das ganze nun vom PC aus gesteuert
werden. Auch dies funktioniert mit dem seriellen Monitor von der Arduino
IDE. Nun wollte ich die ganzen Eingaben mit einem Excel Sheet
realisieren. Die RS232 Kommunikation sollte daher VBA übernehmen.
Da liegt nun mein Problem. Ich habe ein VBA Skript gefunden und dieses
würde wunderbar funktionieren. Allerdings braucht der Mikrocontroller
ein high auf DTR und RTS. Leider vermute ich das dies mit meinem Skript
nicht funktioniert.
Weiterhin vermute ich das eine andere Methode diese Funktion bietet:
MSComm Modul mit ActiveX. Ich habe gestern den ganzen Tag damit
verschissen dieses MSComm zu installieren, aber ich bekomme es nicht
hin.
Hat wer eine Idee was ich noch tun könnte?
Hier noch der Code ohne MSComm:
1
'EscapeFunctions
2
ConstSETRTS=3'SetRTShigh
3
ConstCLRRTS=4'SetRTSlow
4
ConstSETDTR=5'SetDTRhigh
5
ConstCLRDTR=6'SetDTRlow
6
ConstSETBREAK=8'Setthedevicebreakline.
7
ConstCLRBREAK=9'Clearthedevicebreakline.
8
DimlRetVal,iAsLong
9
DimSerAsComm
10
DimTemperatureAsInteger
11
12
13
PublicSubOvenCom()
14
SetSer=NewComm
15
Ser.CommPort=Range("C2").Value
16
Ser.Settings="9600,N,8,1"
17
Ser.Handshaking=None_Handshake
18
Ser.TimeOut_ms=1000
19
Ser.EOL_Terminator="\n"
20
Ser.EOL_On=False
21
Ser.PortOpen=True
22
IfNotSer.PortOpenThen
23
temp=MsgBox("Com port is not available",vbOKCancel,"Error")
Russelduff schrieb:> Nun wollte ich die ganzen Eingaben mit einem Excel Sheet> realisieren.
Ist das nicht etwas übertrieben? Wieviele 1000 Temperaturpunkte brauchst
du denn?
Bring dem Arduino doch lieber bei, ein paar Profile über den seriellen
Monitor im EEPROM ablegen und von da ausführen zu können.
Braucht der µC einen Statuswechsel auf DTR und CTS, oder müssen die
einfach nur auf High liegen? Letzteres ließe sich doch einfach mit einer
Lötbrücke erschlagen.
> Allerdings braucht der Mikrocontroller ein high auf DTR und RTS.
Das ergibt sich von ganz alleine, wenn du den seriellen Port öffnest.
Denn das ist die Standardvorgabe von Windows.
Abgesehen davon könntest du die Leitungen beim µC abtrennen und fest an
die Spannungsversorgung löten. Achtung: Dort sind die Signale meisten
invertiert, also bei LOW Pegel aktiv.
Typ schrieb:> Ist das nicht etwas übertrieben? Wieviele 1000 Temperaturpunkte brauchst> du denn?
Würde ich auch so machen, wg. der Grafik und Flexibilität. Excel ist
super für die real time Anzeige und Darstellung und du kannst das
jederzeit anpassen.
Hab das bei einigen Loggern für Kunden gemacht. Die sind begeistert weil
es sehr gut funktioniert und Sie in ihren gewohnten Programmen arbeiten
können.
Aber wi immer in der Microsoft Welt ....:
Das hier hat mir viel Zeit und Ärger gespart, ist aber auch sehr
mächtig:
" This VB module is a collection of routines to perform serial port I/O
without using the Microsoft Comm Control component. This module uses
the Windows API to perform the overlapped I/O operations necessary for
serial communications."
http://www.thescarms.com/VBasic/commio.aspx
Russelduff schrieb:> lso mir reichts, das mit excel funtioniert so nicht.
Excel und seriell funzt auch bei mir nicht, die Lösung s. meine letzten
Beitrag. Lohnt sich aber nur wenn man mehr damit machen will.
Aber in einem Spreadsheet das Temperaturprofil eingeben, es gleich
grafisch zu sehen (in beliebigen Formaten), Soll/Ist in realtime
darstellen, verschiedene Profile, beliebig zu speichern, die
Dokumentation mit drin, gleich rechnen zu können (z.B Wärmemenge, °C
delta, änderung durch Aussentemperatur... und entsprechende Anpassung)
und alles ohne auch nur eine Zeile zu proggen.
Das kann sich lohnen und wie.
X4U schrieb:> Das kann sich lohnen und wie.
Das glaube ich. Die serielle Schnittstelle in Excel hätte ich schon
öfter brauchen können. Sozusagen Matlab light für den armen Mann. Naja
jetzt hab ich mit C# schon angefangen...
Russelduff schrieb:> X4U schrieb:>> Das kann sich lohnen und wie.>> Das glaube ich. Die serielle Schnittstelle in Excel hätte ich schon> öfter brauchen können. Sozusagen Matlab light für den armen Mann.
Das funzt gut sogar realtime (wenn diese nicht > 0,1s ist ;-) ).
> jetzt hab ich mit C# schon angefangen...
Viel Erfolg.
Ich würde empfehlen die Schnittstelle per DLL anzusprechen. Das sollte
auch in VBA gehen.
Kann man recht einfach mit C++ und Boost oder QT erstellen. Da hast dann
direkt Code für Seriell und Code für CircularBuffer.
Ich hatte mal eine Anwendung in LabView mit serieller Schnittstelle.
Allerdings empfand ich die Stringbearbeitung in LabView relativ
unübersichtlich. Vor allem wenn man den String zuerst dreht, dann
extrahiert, dann ..., dann ... Klar bekommt man per SubVI das ganze auch
ohne Spagetti-Code hin.
Allerdings waren es in C-Code 20 Zeilen und das dann per DLL einbinden.
Freddy schrieb:> Ich würde empfehlen die Schnittstelle per DLL anzusprechen. Das sollte> auch in VBA gehen.
Freddy, Sorry falls das eine triviale Frage ist. Aber wo ist der
Unterschied in VBA via API oder DLL auf die serielle zuzugreifen? .
Russelduff schrieb:> Ich will einen AVR benutzen, um zwecks Reflow löten einen Pizzaofen zu> steuern. Dazu benutze ich einen Pro Micro (Arduino Leonardo). Er misst> die Temperatur und steuert das Heizrelais. Die Hardware funktioniert> soweit.
Wie stabil regelt denn dein 2 Punkt Regler die pt2 Strecke "Pizzaofen"?
Stabil genug?
nicht das ich der Meister des Reflow bin, aber 2punkt Regler und PT2
Strecken sind ja normalerweise hübsche Schaukeln.
Das weis ich noch nicht. Da bin ich auch schon gespannt. Die Hardware
steht zwar schon soweit, allerdings muss ich das ganze Zeug noch in den
Pizzaofen reinbaun und ich hab im Moment keine Bohrmaschine da.
Hier mein zweiter Versuch, falls es wen interessiert. Das funktioniert
ja besser als ich dachte, ich bin begeistert :-D
Ein Problem ist noch wenn das Heizerrelais anzieht, dann springt die
Temperatur um 10 °C hoch. Vermutlich bricht die Versorgungsspannung ein.
Aber das dürfte leicht in den Griff zu bekommen sein.
Weis jemand eine Bezugsquelle für gute Lötpaste? Conrad vertraue ich da
nicht.
Russelduff schrieb:> X4U schrieb:>> Das kann sich lohnen und wie.>> Das glaube ich. Die serielle Schnittstelle in Excel hätte ich schon> öfter brauchen können. Sozusagen Matlab light für den armen Mann. Naja> jetzt hab ich mit C# schon angefangen...
Du kannst ja mal Scilab ausprobieren.
Ist Open source und kann fast so viel wie Matlab, wenn man etwas
Geschick mitbringt.
Russelduff schrieb:> Weiterhin vermute ich das eine andere Methode diese Funktion bietet:> MSComm Modul mit ActiveX. Ich habe gestern den ganzen Tag damit> verschissen dieses MSComm zu installieren, aber ich bekomme es nicht> hin.
Wo ist das Problem? Dazu sind doch nur drei absolut triviale Schritte
nötig.
1) Besorge mscomm.ocx. Das ist der schwierigste Schritt, denn dieses
Active-X-Control gehört nicht zu MSOffice, sondern zu den alten
VB-Versionen bis VB6. Theoretisch ist also die Nutzung illegal, solange
du nicht so eine olle VB-Version besitzt...
2) Kopiere die Datei nach c:\windows\system32
3) öffne eine Instanz von cmd.exe mit Adminrechten. Dann eintippen:
regsvr32 c:\windows\system32\mscomm.ocx
Wo ist jetzt das Problem, mit dem man einen ganzen Tag verbringen
könnte?
c-hater schrieb:> Wo ist jetzt das Problem, mit dem man einen ganzen Tag verbringen> könnte?
Weil man auf Mscomm erstmal kommen muss?
Und weil ich die Schritte, die du aufgeführt hast schon erfolgreich
ausgeführt hab. Danach kam bei mir nur eine Meldung von Excel dass das
Modul nicht Vertrauenswürdig oder so sei. Daraufhin hab ich mir ein Tool
runtergeladen, mit dem man ActiveX Module en- und disablen kann. Hat
leider nix gebracht.
Russelduff schrieb:> Danach kam bei mir nur eine Meldung von Excel dass das> Modul nicht Vertrauenswürdig oder so sei.
Dann war es wohl nicht das Original, sondern irgendwas, was nur genauso
heißt und wer weiß was tut...
Das Original ist nämlich von Microsoft signiert und deswegen hat Excel
auch kein Poblem damit...
Oder anders ausgedrückt: mit an Sicherheit grenzender Wahrscheinlichkeit
hast du dir da einen Downloader für einen Trojaner installiert. Du hast
Glück, dass Excel in neueren Versionen so mäklig ist, sonst wäre der
Downloader aktiv geworden und du hättest dein Kiste neu installieren
können, um die Malware wieder loszuwerden, die er nachlädt...
Du solltest also keinesfalls versuchen, das Control mit einer anderen,
weniger mäkligen Anwendung zu benutzen, sondern schleunigst wieder
deinstallieren.
Auch wieder nur zwei einfach Schritte:
1)
regsvr32 /u c:\windows\system32\mscomm.ocx
2)
del c:\windows\system32\mscomm.ocx