PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servotester für VB und Bascom



kalletronic
01.11.2008, 11:05
Hi Leute,

hab grad wieder ein Programm gefunden, das ich anfang des Jahres mal geschrieben habe. Es sollte zum testen von 4 Servos sein, ist aber erweiterbar. Leider war ich zu faul das Programm zu Kommentieren ](*,)
Für ein Servo funktionierte es jedenfalls einwandfrei, warum die letzten 3 ausgeklammert sind weis ich auch nich mehr so genau :-k .
Gestestet hab ich das ganze auf dem RN Board. Schaut mal drüber, vllt findet ihr was das man verbessern kann.
Im programm von Bascom is auch ein Teil von einem Projekt drinnen, das ich hier ma erwähnt habe( Hausbus ) und zwar die "Befehlserkennung",da hab ich versucht so ne Art Protokoll festzulegen wie die Befehle über die serielle Schnittstelle gesendet werden und dann ausgewertet werden, was besseres is mir da nich eingefallen #-o

Würde mich über Kritik freuen, (positiv und negativ O:) )

Mfg Kalle

kalletronic
14.12.2008, 15:51
Schade, nich mal ein negatiever Kommentar :-(

holzi
15.12.2008, 06:04
Guten morgen,
Dein Ansatz ist bestimmt für einige hier recht interessant. Ich habe mir das angeschaut.
Bei Deinem VB-Programm legst Du fest, dass es die Com-Ports 1 bis 10 auf dem PC gibt. Wird ein Port ausgewählt, den der Rechner nun aber nicht hat, stürzt es ab. Besser wäre, das Programm sucht erst einmal alle zur Verfügung stehenden Ports und gibt nur diese in Deiner Liste an. Das Programm stürzt dann nicht mehr ab.
Warum machst Du für jeden Servo eine Sub, wenn es jedesmal das gleiche ist? Eine Sub mit Parameterübergabe für alle Servos wäre besser.
Im Bascom-Programm würde ich das auch nicht per Input machen, da das Programm dann immer an dieser Stelle stehen bleibt und nichts weiteres machen kann. Meiner Meinung nach wäre es da besser mit dem Interrupt zu arbeiten.

Config Serialin = Buffered , Size = 10 'UART-Interrupt

und innerhalb des Programms den Interrupt mit

If Ischarwaiting() = 1 Then
End If

abzufragen, damit das Board auch noch etwas anderes durchführen kann.
Das sollte nun aber wirklich keine Kritik sein, sondern ich möchte Dir Verbesserungen zeigen.
Das Programm könnte auch noch so erweitert werden, dass über eine Voreinstellung z.B. die Anzahl der Servos angegeben und gesteuert werden können. Z.B. max. 25 Servos. Zusätzlich über eine Grafik die Stellung des jeweiligen Servos anzeigen. Dazu fällt mir so einiges ein. Aber Du machst das schon. Du solltest diese Software weiter entwickeln und dann hier zur Verfüng stellen, denn wie schon gesagt, wird das einige hier interessieren.

Viel Spass weiterhin damit.

Peter

kalletronic
17.12.2008, 21:32
Hi Peter, danke für die Vorschläge, ich werd mich da mal dran setzen, mal schaun was dabei raus kommt. Ich meld mich dann mal wieder wenns etwas geworden ist.

Gruß Kalle

Vitis
18.12.2008, 00:57
Den COM - Error kannste auch über OnError abfangen
ohne Programmabsturz ... ist denk ich einfacher als alle
Ports erst testen.

holzi
18.12.2008, 05:19
Guten morgen
Genau damit wird es gemacht. Wenn ich den Errorlevel aber schon habe, kann dieser Level auch gleich ausgewertet werden. Wie willst Du es denn machen bei einer Com 24. Das ist so ein typischer Wert für eine virtuelle Com_Schnittstelle, denn Windows unterstützt ja eigentlich nur bis Com 16.

Peter

holzi
18.12.2008, 13:33
Hallo Kalletronic,
ich habe mal die Anbindung über die serielle Schnittstelle in Deinem Programm geändert und zwar so, wie ich es oben meinte. Wenn Du an dem Code Interesse hast, schick mir mal Deine Emailadresse per PM an mich, damit ich Dir den Code dann zuschicken kann.
Peter

kalletronic
18.12.2008, 21:06
Hi Peter,



Warum machst Du für jeden Servo eine Sub, wenn es jedesmal das gleiche ist? Eine Sub mit Parameterübergabe für alle Servos wäre besser.


Meinst du im VB-Programm?

Gruß Kalle

holzi
19.12.2008, 05:14
Guten morgen Kalle,
ich habe Dir gerade den Code zugemailt.
Ich meine den VB-Code. Aberschau Dir meinen Code mal an.

Peter

kalletronic
20.12.2008, 13:52
Hi Peter,
hab mir dein Programm grad runtergeladen und die EXE-Datai mal gersatret, sieht gut aus!! Nur kann ich mir den Quellcode nich ansehn, da ich das programm nicht öffnen kann. Es kommt ne Fehlermeldung daß die Datei Form1 nich geladen werden kann. In der Datei Form1.log steht dann folgebdes:




'0' konnte nicht geladen werden
Zeile 0: Datei C:\Dokumente und Einstellungen\Vaio FE\Eigene Dateien\Elektronik\uC Programme\Projek kann nicht geladen werden.


Gruß Kalle

holzi
20.12.2008, 16:54
Hi,
kommt bei mir auch auf diesem Rechner. Da habe ich wohl nicht alles auf meinen Stick am anderen Rechner kopiert. An den anderen Rechner komme ich aber erst am Montag Morgen wieder ra. Ich kopier Dir das dann noch mal und schicke es Dir per Email zu.

Peter

kalletronic
30.12.2008, 14:32
So, ich hab mal das Bascom Programm abgeändert, daß es über interrupt funktioniert:



'Servo Test für VB Programm SERVO
'Befehle über RS232 / RS485
'Erstellt 30.12.2008 By Kalle
'Befehlsaufbau: 1125
' ||
' |=Servobosition
' =Servonummer


$regfile = "m32def.dat"
$crystal = 16000000


Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb = Output
Config Serialin = Buffered , Size = 20 , Bytematch = 13 'Bytematch=13 Interrupt bei CR auslösen

Enable Interrupts

Declare Sub Serial0charmatch()

'*** Variablendeklaration ***

Dim Befehl As String * 5
Dim Nummer As String * 2
Dim Aktion As String * 3
Dim Nummerbyte As Byte
Dim Aktionbyte As Byte


'*** Hauptprogramm ***

Do

If Len(befehl) > 0 Then
Print Befehl
Nummer = Left(befehl , 1)
Aktion = Mid(befehl , 2 , 3)
Nummerbyte = Val(nummer)
Aktionbyte = Val(aktion)
If Aktionbyte < 50 Then Aktionbyte = 50 'Positionsbegrenzung nach unten
If Aktionbyte > 150 Then Aktionbyte = 150 'Positionsbegrenzung nach oben
Servo(nummerbyte) = Aktionbyte
Print Nummerbyte
Print Aktionbyte
End If
Befehl = ""
Loop


Sub Serial0charmatch()

Input Befehl Noecho

End Sub




Wenn ich mich nich verlesen hab in der Hilfe, kann ich mit "Config Srevos" aber nur 2 Servos ansteuern, oder??

Gruß Kalle

patti16
30.12.2008, 20:04
hallo,

dukannst bis zu 16 Servos mit diesem Befehl ansteuern

SMB-Soft
24.01.2009, 19:39
Hallo zusammen,
ich habe die Programme mal getestet bei mir geht nichts.
Ich verwenden einen Mega 8, ich habe die Parameter entsprechend angepasst. Die Fuse Bits sind alle aus.
Ich habe die Servos an PB0 und PB1 angeschlossen.
Die Servos wollen sich einfach nicht bewegen. Hat jemand einen Tip warum ?

Gruss
Stefan

kalletronic
26.01.2009, 21:30
hi Stefan,

die Programme sind auch noch nich ganz fertig, die Version die ich hochgeladen hab, hab ich getestet, sie funktioniert aber nur mit einem Servo. Ich bin grad dabei das ganze Programm komplett umzukrempeln, mit einem neuen Telegrammaufbau, der mir aber zur Zeit einige Probleme bereitet
https://www.roboternetz.de/phpBB2/viewtopic.php?t=44453
aber ich hoffe ich bekomms hin, dann müsste es auch mit 16 Servos funktionieren und wenn alles klappt, soll es dann eine komplette GUI für 2 Motoren einige Sensoren usw. werden.

Gruß Kalle

neuer60
31.07.2011, 11:58
hallo!
wolte fragen wie die belegung für den comport ist,für den atmega32.

gruß neuer