Orangutan X2 - Motor problem...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Orangutan X2 - Motor problem...

Inlägg av squiz3r »

Tjena. Jag har precis börjat med Orangutan X2 datorn (http://www.pololu.com/catalog/product/716) som jag ska driva en robot med.

Eftersom den är så dyr har jag inga planer på att börja med den, utan jag håller mig nog till nakna processorer istället, utan jag har bara lånat den för att driva en prototyp robot. Därav skriver jag programmet i C och använder väldigt mycket färdiga bibliotek.

Jag började med att göra ett program som blinkar på lysdioderna, och det gick bra. Men sen tänkte jag börja använda motorerna som jag har kopplat in till motordrivarna på den, men dem fick jag inte igång.

Jag hittade inte någon "init-funktion" för motorerna, så jag började med att bara skicka SetMotor1(50) som skulle sätta motor 1 till hastigheten 50. Men det hände inget, status lysdioderna på motordrivaren lyser inte heller. Så sen testade jag funktionen "setPWMFrequencies(RESOLUTION_8BIT, PRESCALER_8, RESOLUTION_8BIT, PRESCALER_8);" som skulle sätta hastigheten till 8-bitars värde (-255 till +255) och sätta PWM frekvensen med prescalern på 8. Men samma resultat här, dvs inget alls...

Någon som är van vid dessa? Hur ska jag gå till väga? Jag använder SPI 1.0 biblioteket som finns på Pololus hemsida LÄNK

Mvh. Danne
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Re: Orangutan X2 - Motor problem...

Inlägg av JonasJ »

Har du initierat biblioteket, SPIInit()?
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Re: Orangutan X2 - Motor problem...

Inlägg av squiz3r »

Ohh, Det kanske inte är en sån dum ide! :wink: :wacko:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Orangutan X2 - Motor problem...

Inlägg av sodjan »

> som skulle sätta hastigheten till 8-bitars värde (-255 till +255)

Hur får du ihop det där ?
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Re: Orangutan X2 - Motor problem...

Inlägg av squiz3r »

sodjan: Jo, det var lite slarvigt skrivet. Men den funktionen som man kallar på för att sätta hastigheten skickar 0-255 till slavprocessorn, och sen en separat bit som bestämmer om det är positiv eller negativ. Men till den funktionen skickar man -255 till +255. :)

Nu fungerar det hur bra som helst, man känner sig lite korkad efter att ha glömt en sån uppenbar sak :oops:. Synd bara att VNH3S.. modellen inte har current feedback, annars gillar jag Orangutan-X2 riktigt bra! :D
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Re: Orangutan X2 - Motor problem...

Inlägg av JonasJ »

Den finns med current feedback oxå.

Bra att du fick det att funka! Det blir lite roligare så :)
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Re: Orangutan X2 - Motor problem...

Inlägg av squiz3r »

Nu känner jag mig riktigt korkad :!:

Nu när jag har lyckats med motorerna tänkte jag: Ahh, Nu skriver jag en liten snutt för att testa så att det fungerar med ett RC servo. Efter många många timmars felsökande sitter jag fortfarande med ett icke fungerande servo.. :(

För att felsöka har jag ändrat DDRD till DDRC och PORTD till PORTC i koden vilket gjorde att LED'n som sitter där blinkade i rätt frekvens. Så problemet finns inte på PORTC... Men sedan testade jag på PORTA, och där fungerar det inte heller :/

Just nu har jag lust att avrätta den personen som uppfann AVR, det är nämligen så att jag precis såg i databladet att det är tvärt om mot PIC (och tvärt om mot logiskt tänkande!), en 0'a i DDR registret gör porten till ingång, och en 1'a gör den till utgång :evil:.

Detta förklarade varför det inte fungerade innan, och det som gjorde att LED'n lös ändå va att det interna pull-up motståndet aktiveras på samma sätt och driver därmed LED'n (dock svagt!). Men trots att jag fixade till detta fungerar det inte på PORTA eller PORTD...

Här kommer koden i alla fall. Förhoppningsvis har jag inte gjort ett lika klantigt fel som jag gjorde sist.. :)

Kod: Markera allt

#include <avr/io.h>


#define F_CPU 20000000		// Orangutan X2 runs at 20 MHz
#include <util/delay.h>		// uses F_CPU to produce delay routines


void delay_ms(unsigned int time_ms)	// Used to make long (all) delays in milliseconds...
{
	while (time_ms != 0)
	{
		_delay_ms(1);		// this function comes from <util/delay.h>
		time_ms--;
	}
}

void delay_us(unsigned int time_us)	// Used to make long delays in microseconds (Takes 10 microseconds each time..)
{
	while (time_us > 0)
	{
		_delay_us(10);	// From delay.h...
		time_us -= 10;
	}
}

int main()
{
	DDRD |= 0b10000000;	// Set servo pin (D0) to output...
	DDRC |= 0b00000001;	// Set LED pin (C7) to output...
	for(;;)	//Loop for ever...
	{
		PORTD |= 0b10000000;	// Set servo signal high...
		PORTC |= 0b00000001;	// Set LED high...
		delay_ms(2);	// Delay 2 ms.
		PORTD &= 0b01111111;	// Set servo signal low...
		PORTC &= 0b11111110;	// Set LED low...
		delay_ms(20);		// Delay for 20 milliseconds...
	}

	return 0;
}
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Orangutan X2 - Motor problem...

Inlägg av vfr »

Jag skulle vilja säga att det är tvärtom. PIC är lite bakvänd i det avseendet. Säger jag som jobbar mycket med just PIC:ar. På alla Motorolaprylar jag använt tidigare, både mikrokontroller och I/O-kretsar, så har det varit 0 för ingång och 1 för utgång. Och självklart så är registret 0 efter reset, d.v.s allt som ingångar. Logiskt och bra.

Nu är ju naturligtvis allting utifrån ens egna referensramar, så naturligtvis kan det verka bakvänt om man börjat med PIC.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Orangutan X2 - Motor problem...

Inlägg av thepirateboy »

DDRD |= 0b10000000; // Set servo pin (D0) to output...

sätter D7 som utgång.... finns fler saker som är fel.

Använd simulatorn i AVR-studio om du är osäker på saker och ting.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Re: Orangutan X2 - Motor problem...

Inlägg av squiz3r »

Hmm, Kan det bli problem om jag låter de oanvända IO pinnarna vara ingångar? Vet att det kan bli problematiskt på PIC'ar...

Pirat: Oj :oops:, Det märks att det var ett tagsedan jag programmerade PIC'arna... Då har jag gjort det fel på alla ställena, men är det mera än det som är fel?
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Orangutan X2 - Motor problem...

Inlägg av thepirateboy »

Det är aldrig bra att låta ingånga vara öppna, så vill man vara säker på att undvika problem aktiverar man internt pullup eller sätter dom som utgång.

Det jag tänkte på var att de andra portarna också är fel, så fixa alla dessa så är det större chans att det funkar. :)
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Re: Orangutan X2 - Motor problem...

Inlägg av squiz3r »

Tack så mycket! Nu fungerar det utmärkt :).
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Orangutan X2 - Motor problem...

Inlägg av vfr »

Det gäller alla CMOS-ingångar. Att inte låta dom ligga öppna.
Skriv svar