Hallo liebe Mikrocontroller Gemeinde,
ich habe ein Problem udn hoffe das mir einer von euch freundlichen
Profis helfen kann. Ok ich mache es kurz. Ich habe einen Roboter gebaut
der super funktioniert, aber nun sollte er per Ultraschall erweitert
werden. Da ich lieber selbst baue als fertig zu kaufen habe ich das
Ultraschallmodul für den Asuro nachgebaut. Leider funktioniert es nicht.
Leider sind alle Codes für dieses Modul in C geschrieben und ich komme
mit C einfach nicht zurecht und arbeite mit Bascom und habe also
versucht ein Ultraschallprogramm für das SRF05 US Modul so zu ändern das
es mit dem Asuromodul läuft.
Tja dem ist aber nicht so. Ich habe leider kein Ozzilloskop zum messen,
aber ich gehe von aus das ich keine Fehler gemacht habe und das dass
Modul selber funktioniert. Hehe ja ich weiss das gilt noch zu beweisen,
aber das Modul funktioniert bei vielen anderen leuten also ist die
konstruktion generell ok.
Daher würde ich mich sehr freuen wenn Ihr euch mal die folgenen Sachen
angucken könntet und nach Fehler oder Verbesserungen gucken könntet.
Suchfunktion und Google und so weiter konnten mir bis jetzt nicht
helfen.
Also mein Vermutung ist das, dass Bascomprogramm so nicht mit dem Modul
funktioniert und angepasst werden muss. Z.B. verwendet das Modul den Pin
D6 (hab ich selber nur gelesen) zum entladen und zum verhindern von
Ultraschallkurzschlüssen oder so. Sowie scheint es das, dass
Bascomprogram auf eine steigene flanke setzt während die C Version auf
eine fallende flanke setzt? Ich muss sagen so lange progge ich auch
nicht und kann mich bei sowas schnell irren.
Ich benutze aktuell zum testen einen Atmega16 mit externen 4mhz Crystal
und verwende die selben Pins wie beim Asuro und dem Programm in C
(OC2,ADC3,PD6).
Ich bedanke mich schon mal bei allen die mir helfen möchten und sollten
Informationen fehlen oder Fragen aufkommen versuche ich diese zu
beantworten.
Gruß Lister
PS: Hier alle Informationen:
Schaltplan vom Asuro Ultraschallmodul siehe Anhang (der IC soll ein
TS912IN sein).
Original C Code:
1
#include"asuro.h"
2
3
voidLocalInit(void)
4
{
5
// Change Oscillator-frequency of Timer 2
6
// to 40kHz, no toggling of IO-pin:
7
TCCR2=(1<<WGM21)|(1<<CS20);
8
OCR2=0x64;// 40kHz @8MHz crystal
9
ADCSRA=0x00;// ADC off
10
// Analog comparator:
11
ACSR=0x02;// Generate interrupt on falling edge
12
ADMUX=0x03;// Multiplexer for comparator to
13
// ADC pin 3
14
SFIOR|=(1<<ACME);// Enable muliplexing of comparator
15
DDRD&=~(1<<6);// Port D Pin 6 is input!
16
}
17
18
19
voidPing(unsignedcharlength)
20
{
21
count72kHz=0;
22
TCCR2=(1<<WGM21)|(1<<COM20)|(1<<CS20);
23
// Toggling of IO-Pin on
24
25
// generate the Chirp
26
while(count72kHz<length){
27
OCR2=0x64+length/2-count72kHz;
28
}
29
30
TCCR2=(1<<WGM21)|(1<<CS20);// Toggling of IO-Pin off
31
OCR2=0x64;// set frequency to 40kHz
32
}
33
34
35
intmain(void)
36
{
37
intpos,i;
38
intposmarker;
39
Init();
40
LocalInit();
41
while(TRUE){
42
posmarker=0;
43
Ping(20);
44
for(pos=0;pos<100;pos++){
45
Sleep(10);
46
if((ACSR&(1<<ACI))!=0){
47
if(posmarker==0){posmarker=pos;}
48
}
49
ACSR|=(1<<ACI);
50
}
51
if(posmarker>10){
52
StatusLED(GREEN);
53
MotorDir(FWD,FWD);
54
MotorSpeed(200,200);
55
}
56
else{
57
StatusLED(RED);
58
MotorDir(FWD,RWD);
59
MotorSpeed(0,200);
60
for(i=0;i<100;i++){Sleep(200);}
61
}
62
}
63
64
return0;
65
}
Hier das Bascomprogramm für das SRF05 von mir für das Asuromodul
umgebaut (der original Code ist von RN Wissen):
Funktioniert das Modul mit dem Programm, das aus dem C-Code erstellt
wurde? Wenn nein, ist Fehlersuchen angesagt statt Umschreiben in BASCOM.
Zum Fehlersuchen gehört das Schaltbild.
In deinem Bascom-Programm ist der Trigger-Impuls 4xlänger als nötig (was
aber nicht problematisch sein sollte).
Und der Echo-Impuls wird anders als im C-Code nicht mit dem AC-gemessen
sondern in 10µs Schritten mit der PULSEIN-Funktion von BASCOM.
Erstmal danke für deine Antwort. Ja kann gut sein das der 4 mal länger
ist. Ich hatte das vom Programm für den SRF05 einfach übernommen in der
Hoffnung was der kann kann der andere auch hehe.
Also der Schaltplan ist astrein, der funktioniert ind er Form in
tausenden von Asuros. Höhstens bei der Ausführung könnte es fehler
gegeben haben. Daher habe ich Lötstellen nach gelötet und zwischenräume
zur sicherheit sauber gekratzt. Alle teile sind auch an der richtigen
Stelle. Aber das ich evtl. was über sehen habe oder ein teil defekt ist
kann ich natürlich nie ausschliessen hehe
Was ich zumindest stümperhaft testen konnte war, dass was aus dem AVR
kommt auch beim US Sender ankommt. Hab einfach eine Led angeklemmt die
leuchtet dann ich sag mal Rhytmisch am AVR und am US Sender. Daher denke
ich das zumindest der Sender funktioniert. Ich habe aber auch kein
Haustier was US hören könnte hehe.
Gruß Lister
Ok hier ein Update:
Also ganz falsch kanns nicht sein, weil ich habe Gestern aus
verzweiflung einfach den Code nochmal neu per Hand geschrieben. Dabei
hatte ich die Umrechnung vergessen mit rein zuschreiben. Auf einmal
konnte ich ne Zahl lesen. Immer eine 1 und ganz selten ne 3 immer wenn
ich zwischen 5 bis 20 cm ein Hindernis aufbaue. Damit sei bewiesen das
Ultraschall gesendet und empfangen wird. Ok ist immer noch murks, aber
es ist ein Hoffnungsschimmer. Bei mir macht es den Eindruck als ob das
Singal sehr schwach ist. Da frage ich mich ist der Sender schwach oder
der Empfänger nicht empfindlich genug ist? Aber das ist nur geraten.
Ich habe auch eine Zwischenfrage. Ich habe Gestern alles durchgemessen
was ich konnte. Beim dual Opamp TS912IN liegt überall die selbe Spannung
an bis auf natürlich VCC und komischer Weise an Pin 5. An Pin5 liegt die
Spannung immer 0,01 Volt niedriger als an den anderen Pins. Ist das so
korrekt?
Alle Widerstände sind an der richtigen Stelle und nachgemessen wurden.
Der BC547 funktioniert auch genauso wie die Diode. Keine kalten
Lötstellen gefunden und auch keine ungewollten Lötbrücken.
Ja was ich noch gesehn habe der Pullupwiderstand R1 für den Empfänger
ist auf meiner Platine recht weit von der Empfängerkapsel, aber das sehe
ich nicht kritisch.
Bin für weitere Idee offen.
Gruß Lister
> Da ich lieber selbst baue als fertig zu kaufen habe ich das> Ultraschallmodul für den Asuro nachgebaut.
Oh das hatte ich überlesen und bin erst jetzt drauf gestossen, weil du
so viel vom Untersuchen der Hardware schreibst.
Du hast jetzt die berühmten drei Probleme auf einmal.
1) Unzuverlässige Hardware.
2) Unzuverlässige Software.
3) Keine Tools zum Debuggen.
Man kann
a) sich zuverlässige Hardware beschaffen. U.U. gibt es Nachbauer, die
einen Aufbau in ihrem System testen oder dir ein bekannt
funktionierendes System überlassen.
b) sich zuverlässige Software beschaffen. U.U. gibt es Nachbauer, die
einem ein bereits kompiliertes C-Programm für den Asuro per Email
senden.
c) vielleicht findet sich in der Nähe jemand, der bei den Messungen
hilft. Das kann ein selbstbauender Funkamateur(club) oder ein
E-Technik-Labor an der Uni sein oder ein Hackerspace oder einfach nur
ein anderer User aus dem/den Foren.
Hmmm ja das war mir auch schon klar :P Bevor ich nen E-Technik Labor
stürme kauf ich lieber für ca. 17 Euro nen fertiges Modul. Daher werde
ich wohl das Problem so lösen müssen. Daher erneut die Frage ob das
normal ist das an Pin5 des TS912IN 0,01 Volt weniger anliegt als an den
anderen.
PS: die anderen Vorschläge haben entweder keine Ergebnisse gebracht oder
nicht machbar. Dennoch vielen dank für deine Beiträge.
Ich suche Eine Fertiger gebaute Ultraschall Sensor für die Asuro !! wo
kann das kaufen oder hat jemand schon das selbst gebaut et will jetzt
wider das verkaufen.
PS: Ich habe schon 2 mal die Bausatz selbst gekauft und zusammen gebaut
aber Funktion nicht deswegen will ich mich ein fertiger kaufen.
Hier ist meine e Mail patrice_alai@yahoo.com
BItte betreibe keine Leichenfledederrei.
Wenn du eine Frage hast, dann mach einen eigenen Thread dazu auf, denn
deine Frage hat nichts mit dem Thema des Threads zu tun.,