-
Auf den Bildern wirst du aber net viel erkennen denke ich :o/ weder kalte lötstellen, noch Widerstandswerte und auch die Verbindungen der Bauteile sind nicht ordentlich auf dem Bild erkennbar. Und mir gehts bei dem Hardwarefehler im moment mehr um Teile die evtl defekt sein könnten.
Die Lötstellen hab ich mittlerweile zum 5mal kontrolliert, selbst alle widerstände kontrolliert das keiner falsch eingelötet ist und die Verbindungen mehrmals mit der Schaltung kontrolliert.
-
Mir ist gerade aufgefallen, wenn ich beide US-Kapseln mit dem Isolierten Teil nach oben einlöte, liegt an der einen Kapsel am isolierten Beinchen der + Pol an und beim anderen der - Pol. Ist das entscheidend oder ist die Polarität hier egal?
genutzte anleitungen:
http://www.arexx.com/downloads/asuro/us_bauplan.zip
http://www.andreae-gymnasium.de/inha...hallsensor.pdf
+ Ausro Band I
-
Hallo Ezalo,
durch deine Fragen zu diesem US-Teil angeregt, habe ich es wieder herausgesucht und zum 100-tausendsten Mal versucht, es in Betrieb zu
nehmen.
Ergebnis: Wie schon vor Jahren = Negativ, Mißerfolg, Frust...
distanz in cm ist immer 0
Habe auch mal an den Pins der Sensoren gemessen, ob da eine Spannung
anliegt ---> Nein, kein gar nix.
Also ich tendiere stark dazu das lausige Teil zu verschrotten.
An der Erweiterung des Asuro funktioniert Snake Vision übrigens prima.
Falls du das Teil doch noch zum Laufen bekommst, schreib mal wie.
Freundliche Grüße und nicht den Mut verlieren. Der Asuro kann noch viele
andere dolle Kunststücke.
Olaf
-
Hallo,
Euh... bin da nicht sicher aber sollte da bei deinem zweiten Program nicht zuerst die InitUltrasonics() Funktion angerufen werden?
Wenn 'abstand = Chirp();' ersatzt wird von 'abstand = 1234;' komt da die Wert 1234 heraus?
Gruss,
Arexx-Henk
-
Der Code ist aus der Anleitung des 2. Links kopiert.
Hab gestern das Programm von "luma" aus folgendem Thread: https://www.roboternetz.de/phpBB2/ze...chall&start=22 geflasht und es kommt dauern nur 0 auf dem Bildschirm. Es kann ja dann eigentlich nur noch irgendwo was nich mit der Hardware stimmen :(
-
Wenn ich mein Ohr an die rechte Kapsel (von vorn draufgeschaut) ranhalte, hör ich ein leises "klacken" was wohl soviel heißt das ein Signal gesendet wird. Die Spannung die ich dabei Messe liegt bei 2,38-2,42V diese sinkt als ständig und steigt wieder. Was wohl soviel heißt das die Kapsel i.O. ist. Wäre vllt doch mal jmd so nett die Spannung an der Rechten kapsel (wohl empfänger) zu messen?
Wenn der Sender ein Signa ausgibt bedeutet dies dann gleichzeitig das der IC i.O. ist?
-
So, hab die Platine einem Arbeitkollegen gegeben. Der hat mehr möglichkeiten das ganze mal durchzumessen und so (Oszi und co.). Am Ende hat sich herrausgestellt das sich eine Verbindung vor dem löten "gedrückt" hat :-O
Und Zwar einer der Anschlüsse des Potis hatte keine Verbindung zum IC.
Habe das ganze jetzt mit folgendem Programm getestet:
Code:
#include "asuro.h"
#include "ultrasonics.h"
int main(void)
{
// Variablen
int chirpData = 0;
// Asuro initialisieren
Init();
set_sleep_mode(SLEEP_MODE_IDLE);
for(;;) {
chirpData = Chirp(TRUE);
PrintInt(chirpData);
SerWrite(" ", 2);
// Bischen warten und dabei Stromsparen
sleep_mode();
MSleep(250);
}
return 0;
}
Im Terminal kommt jetzt entweder ein Wert größer 0 oder es kommt "0 0". Danach kommt erst wieder ein Signal wenn ich die Senderkapsel antippe.
Werde heute mal weiter probieren.
Edit:
Das war jetzt wohl nur eine Einstellungssache des Potis ^^ Bekomme allerdings erst bei einem Abstand von ca. 10cm akzeptable Werte im Terminal zu sehen. Aber vllt lässt sich da ja noch was machen.
-
Hallo,
da bin ich wieder mit dem Problem ^^
Folgendes:
Habe nun verschieden Programme probiert und sie laufen auch wie sie es machen sollen. Sobald ich aber folgendes Programm umänder:
Code:
#include "asuro.h"
void LocalInit(void)
{
// Change Oscillator-frequency of Timer 2
// to 40kHz, no toggling of IO-pin:
TCCR2 = (1 << WGM21) | (1 << CS20);
OCR2 = 0x64; // 40kHz @8MHz crystal
ADCSRA = 0x00; // ADC off
// Analog comparator:
ACSR = 0x02; // Generate interrupt on falling edge
ADMUX = 0x03; // Multiplexer for comparator to
// ADC pin 3
SFIOR |= (1 << ACME); // Enable muliplexing of comparator
DDRD &= ~(1 << 6); // Port D Pin 6 is input!
}
void Ping(unsigned char length)
{
count72kHz = 0;
TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
// Toggling of IO-Pin on
// generate the Chirp
while(count72kHz < length) {
OCR2 = 0x64 + length / 2 - count72kHz;
}
TCCR2 = (1 << WGM21) | (1 << CS20); // Toggling of IO-Pin off
OCR2 = 0x64; // set frequency to 40kHz
}
int main(void)
{
int pos, i;
int posmarker;
Init();
LocalInit();
while(TRUE) {
posmarker = 0;
Ping(20);
for(pos = 0; pos < 100; pos++) {
Sleep(10);
if((ACSR & (1 << ACI)) != 0) {
if(posmarker == 0) { posmarker = pos; }
}
ACSR |= (1 << ACI);
}
if(posmarker > 10) {
StatusLED(GREEN);
MotorDir(FWD, FWD);
MotorSpeed(200, 200);
}
else {
StatusLED(RED);
MotorDir(FWD, RWD);
MotorSpeed(0, 200);
for(i = 0; i<100; i++) { Sleep(200); }
}
}
return 0;
}
auf:
Code:
#include "asuro.h"
void LocalInit(void)
{
// Change Oscillator-frequency of Timer 2
// to 40kHz, no toggling of IO-pin:
TCCR2 = (1 << WGM21) | (1 << CS20);
OCR2 = 0x64; // 40kHz @8MHz crystal
ADCSRA = 0x00; // ADC off
// Analog comparator:
ACSR = 0x02; // Generate interrupt on falling edge
ADMUX = 0x03; // Multiplexer for comparator to
// ADC pin 3
SFIOR |= (1 << ACME); // Enable muliplexing of comparator
DDRD &= ~(1 << 6); // Port D Pin 6 is input!
}
void Ping(unsigned char length)
{
count72kHz = 0;
TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
// Toggling of IO-Pin on
// generate the Chirp
while(count72kHz < length) {
OCR2 = 0x64 + length / 2 - count72kHz;
}
TCCR2 = (1 << WGM21) | (1 << CS20); // Toggling of IO-Pin off
OCR2 = 0x64; // set frequency to 40kHz
}
int main(void)
{
int pos, i;
int drive;
int posmarker;
Init();
LocalInit();
while(TRUE) {
posmarker = 0;
Ping(20);
for(pos = 0; pos < 100; pos++) {
Sleep(10);
if((ACSR & (1 << ACI)) != 0) {
if(posmarker == 0) { posmarker = pos; }
}
ACSR |= (1 << ACI);
}
if(posmarker < 10) {
StatusLED(GREEN);
MotorDir(RWD, RWD);
MotorSpeed(175,175);
for(drive = 0; drive < 71; drive++){
Sleep(255);
}
MotorDir(BREAK,RWD);
MotorSpeed(0,175);
for(drive = 0; drive < 71; drive++){
Sleep(255);
}
}
else {
StatusLED(RED);
MotorDir(FWD,FWD);
MotorSpeed(200,200);
for(i = 0; i<100; i++) { Sleep(200); }
}
}
return 0;
}
leuchtet nur noch die StatusLED grün und nix passiert mehr.
Liegt der Fehler in meinem Code oder eher in der verwendeten Asuro 2.8 rc1 lib?
-
-
Hallo,
Probiere dein Program nochmal aber jetzt ohne die Motoren ein zu schalten. Vielleicht zerstoren die irgendwie die Messung?
Gruss,
Henk