Gå til innhold

Hjelp til valg av microkontroller


Anbefalte innlegg

  • 7 måneder senere...
Videoannonse
Annonse

KAN RETTE VEDKOMMENE FLYTTE DENNE TIL ELEKTRONIKK....... TAKKER :)

 

 

 

 

BUMP!

 

Jaggu, bumper meg selv.....

 

Da skal den gamle - nye ubrukte kontrolleren settes i gang.

 

I ett prosjekt litt langt ute skal denne styre en fjernstyrt bil/ting basert på en elektrisk rullestol. Planen er å bruke kontrollerens PWM funksjon til å styre motorene. Det er to 48V motorer. Er uante krefter i dem for å si det sann

 

Forhistorien er enkel, jeg fikk en elektrisk rullestol i julegave med brudern. Litt spesielt, men vi er en spesiell familie..... Og han jobber med den slags. Fikk tilfeldigvis også en BMW 732iA...... (Oppussings objekt) Bra jul :w00t:

 

Så nå må jeg begynne på det grunnleggende med AVR programmering. Må nokk mase litt her for hjelp ;)

 

Kodingen og forberedningen på koden skjer her:

https://www.diskusjon.no/index.php?showtopic=690004

 

Elektronikken bak styringen blir i denne tråden. Kanskje en Worklog og alt samment blir selfølgelig lagt opp på hjemmesiden.

 

Blir nokk ett langtekkelig prosjekt, men skal realiseres

Endret av Behydro
Lenke til kommentar

må bare spørre; er det en spessiell grunn til at du bruker assembler?

 

brukte det helt i begynnelsen jeg også, men bare til helt enkle ting (LED blinking o.l.). Innså fort at C er en del enklere og lettere å holde kontroll på. For all del bruk assembler hvis du synes det er greit, men vil tru det er litt enklere å få hjelp med C. Hvis det er noe som må optimaliseres så kan du bruke assembler i C koden også.

 

Selv bruker jeg WinAVR og AVR studio

Lenke til kommentar

Nei, var egentlig bare der jeg begynnte..... Har programert litt i assembly på commnadore 64 prosessorer, men det var reint hexadesimalt, skole greier. Ellers så har jeg også skrevet en del pls programm i assembly (mener det er assembly, med rein logikk og sann).

 

Men for all del, mener du at C er bedre så er jo saken klar....

 

Har du noe enkle koder som er godt kommentert som er fine å begynne med.

 

Jeg burker AVR studio 4 og MEGA32ISP til å laste over.

 

Er WinAVR bedre til å laste over med? Eller er det kun får å kompilere. Hvorfor da ikke bruke AVR studio sin kompilator? Eller er det kanskje den som følger med....? Er litt fersk ennå :blush:

 

 

 

 

Til fjernstyring så var foreløbig plan å bruke vanlig rc kontroller og få to servoer til å vri på to pot meter. Så bruke analog til digital omformerene i microkontrolleren til å tryre PWM ut til motorene. For eks bruke en til fram og tilbake(brems) og en til sving.

Program messig vet jeg ikke ennå hva som er enklest, men det kommer nokk etterhvert.

 

For å styre motorene hadde jeg tenkt å koble optokoblere til PWM utgangen på mC, i tilfelle jeg blåser styringen til himmels, så bruke MOSFET til å styre motorene via noe buffer og sant

Endret av Behydro
Lenke til kommentar

Artig, artig! Hvis du er helt fersk i gamet, vil jeg anbefale deg å kikke litt på programmeringsspråket Basic for AVR. Det er veldig intuitivt, og du kan skrive kode omtrent uten å vite noen ting fra før av. Folk sier at dette er tregere og mye mindre funksjonelt enn C, men det er ikke tilfellet. Vil anbefale deg å se på "Bascom AVR", helt genialt. Jeg bruker utelukkende basic for AVR programmering, og har ennå ikke støtt på noe som basic ikke kan, men som C kan.

Ang. RC så skjønte jeg ikke helt hva du mente, så det er mulig du er klar over det, men du kan kjøre servo-PWM rett inn på MCU'en, hvis du bruker vanlige RC-PPM mottager. Da trenger du bare en ledning per kanal mellom mottager og MCU.

Lenke til kommentar

Hvis du f.eks. kobler PWM fra mottager til pinb.1 på MCU'en, så kan du bruke følgende enkle kode i Bascom:

 

Dim A as byte

Config Pind.1 = Input

Do

Pulsein PinB, 1, A

Lcd A

Loop

 

 

Denne koden vil hele tiden presentere verdien av PWM-signalet ut på et LCD-display. Kan det bli lettere? Tviler på det....

 

Godt nyttår!

Lenke til kommentar

De her virker jo bare helt genialt..... Regner med at der må en del mer kode til for å sette opp selve programmet, men virker jo greit dette her. Må ta og få mekket til ett lcd og koble på.

 

Noen som har noe formeining på hva som egner seg mest å bruke til mcu? jeg har 40x2, 20x4 og 16x2 liggende?

 

Må finne noe kode om dette.....

Lenke til kommentar
De her virker jo bare helt genialt..... Regner med at der må en del mer kode til for å sette opp selve programmet, men virker jo greit dette her. Må ta og få mekket til ett lcd og koble på.

 

Noen som har noe formeining på hva som egner seg mest å bruke til mcu? jeg har 40x2, 20x4 og 16x2 liggende?

 

Må finne noe kode om dette.....

7618042[/snapback]

 

I bascom kan alle de displayene brukes, så lenge de konfigureres korrekt.

Det følgende er fullstendig kode for det overnevnte eksempelet.

Det er for en Mega8 med 16x2 display, se pseudokode.

 

$regfile = "m8def.dat" ' <- denne endres til korrekt MCU

$baud = 9600

$crystal = 8000000 ' <- Denne endres til korrekt krystall

Config Lcdbus = 4

Config Lcd = 16 * 2 '<- Denne endres til korrekt display

Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 ' <- Disse endres til korrekte pins for displayet

Cursor Off

 

Dim A as byte

Config Pind.1 = Input

Do

Pulsein A, PinB, 1, 1

Lcd A

Loop

Endret av gamleerik
Lenke til kommentar

WinAVR er en programvare pakke som inneholder alt du trenger og kan brukes helt for seg selv, men jeg bruker den sammen med avrstudio. AVRstudio har bare kompilator for assembler, men legger du inn WinAVR (eller en annen pakke som inneholder avr-gcc) så kan du programmere i C og kompilere det fra AVRstudio. Personlig liker jeg editorern i WinAVR (programmers notepad).

 

Stasjonær PCen min er nede for telling så har ikke så mye kode her, men du kan se i kildekoden til viftestyringen min vingtor.kicks-ass.org/filer/prosjekt/viftekontroll/ . Merk at denne koden er gammel og muligens ikke vil kompilere med den nyeste kompilatoren.

 

Ellers så har jeg så vidt begynt å kode på noe nytt hvor jeg prøver å ta i bruk litt mer "avanserte kodeteknikker";

/******************************************************************************
* IR remote reciever
*
* by VingTor - [email protected]
*
* rev 1.0
*
*******************************************************************************
* MCU: ATmega8515
*
* Resorces used:
*	Timer/counter0
*	ext. interrupt 0 (int0)
*
*
******************************************************************************/

/*** INCLUDE ***/
#include <avr/io.h>
#include <avr/interrupt.h>



/*** DEFINE ***/
#ifndef F_CPU
#define F_CPU 3686000 /* Hz */
#endif /* F_CPU */

#ifndef IR_settings
#define IR_settings
#define IR_input_port PORTD
#define IR_input_ddr DDRD
#define IR_input_pin PIND2
//LED port? can use input pin (output from sensor) with buffer/LED driver
#endif /* IR_settings */

#define debug


/*** sub-rutines ***/
void delay(unsigned int p)
{
 unsigned int i;
 unsigned char j;
 for(i=0;i<p;i++)
   for (j=0;j<100;j++);

}


void init_IR()
{	
//setup IR port
IR_input_ddr  &= ~(_BV(IR_input_pin));  //Set input pin
IR_input_port |= _BV(IR_input_pin);  //enable pull up on pin

//setup timer
// endre til ...= (1 << navn)|(1 << navn)|(1 << navn) osv. for generisk kode
TCCR0 = 0x05; //timer control register //set clk to enable/start
TCNT0 = 0x00; //timer register
OCR0  = 0x00; //output compare register
TIMSK = 0x02; //interrupt mask register //overflow

//setup ext.interrupt on IR-pin (default PD2)
MCUCR = 0x01; //change on int0 interrupts
GICR  = 0x40; //ext int0 enable	

sei();    // enable interrupts
}

/*** interrupts ***/
SIGNAL(SIG_OVERFLOW0)
{
//PORTB &= 0x7F; //LED for testing

}


SIGNAL(SIG_INTERRUPT0)
{
//PORTB &= 0x7F; //LED for testing

}


#ifdef debug

int main(void)
{
   
init_IR();


   //LED output for testing
   DDRB = 0xFF;  //Port B as output
   char temp = 0x00;  //
   PORTB = temp | 0x80;



   while(1)
   {
   	temp += 1;
 PORTB = temp | 0x80;
   	delay(100);
 
   }
}

#endif /* debug */

 

(denne koden gjør ikke noe spessielt enda da, testa bare litt små ting)

 

Om du velger å programmere i C, så må du bare si i fra om du trenger hjelp til noe.

Endret av Dr_VingTor
Lenke til kommentar

hva er forskjellen på en atmel som behydro har og en sånn pic som jeg har?

 

Og enda en ting!

Jeg trenger et programeringsspråk :w00t:

Har brukt et program som heter picbasic pro, men det var en trial verson så jeg fikk bare skrivd maks 30 linjer med kode. Er nødt til å kjøpe fullversjonen.. Noe anna program jeg kunne brukt?

 

Programerte da en pic16f84, som nå er ødelagt etter at jeg klarte å knekke noen bein på'n. Har ikke ic klype :realmad:

 

EDIT: PICBASIC PRO™ Compiler $249.95 :no:

Endret av zyfah
Lenke til kommentar
Artig, artig! Hvis du er helt fersk i gamet, vil jeg anbefale deg å kikke litt på programmeringsspråket Basic for AVR. Det er veldig intuitivt, og du kan skrive kode omtrent uten å vite noen ting fra før av. Folk sier at dette er tregere og mye mindre funksjonelt enn C, men det er ikke tilfellet. Vil anbefale deg å se på "Bascom AVR", helt genialt. Jeg bruker utelukkende basic for AVR programmering, og har ennå ikke støtt på noe som basic ikke kan, men som C kan.

Ang. RC så skjønte jeg ikke helt hva du mente, så det er mulig du er klar over det, men du kan kjøre servo-PWM rett inn på MCU'en, hvis du bruker vanlige RC-PPM mottager. Da trenger du bare en ledning per kanal mellom mottager og MCU.

7613591[/snapback]

 

 

Har sett litt på "Bascom AVR", er ikke det strengt tatt ett prog man må betale for?

 

Har litt problemer med å bestemme meg for om jeg skal satse på basic eller C..... HJELP!!

Lenke til kommentar

Joa, man burde vel betale for det. Sånn sett....

Du får mer igjen for å sette deg ned og lære deg C, så jeg synes du burde gjøre det, dersom du har tid og lyst.

Fordelen med basic er jo at du ikke trenger å lære det i det hele tatt, det er "basic". Har du et nytt prosjekt en dag, så vil det med basic ihvertfall ikke være programmeringen du står fast ved.

Lenke til kommentar

Har vært en del på den siden. Det blir C kode på meg, har inne ett lite (ekstremt lite) knippe C++ fra før, dette er jo en enklere versjon. basic er enkelt, men livet trenger ikke alltid å være så enkelt.

 

Hele prosjektet her kunne vært gjort enkelt ved å bare sette på servoer på joysticken som er på rullestolen og bruke den styringen som er der, men da er jo hele lære verdien forsvunnet..... Kunne også brukt servoer, pot meter, 555 icer og laget enkle pwm kretser.....

 

 

C it is!

 

Da var det bare å ta på seg lesebrillene og begynne å studere.

Lenke til kommentar
  • 2 år senere...

På tide med en bump.. ;)

 

Jeg har tenkt å gå i gang med et aldri så lite hobbyprosjekt og trenger anbefaling til mikrokontroller. Jeg er foreløpig ikke særlig kravstor. Minimum 2 utganger for å styre 'rele' og 1 AD-inngang for 'overvåkning' men siden et sånt prosjekt fort kan balle på seg er det nok greit å gå litt over minimumskrava..

 

 

Det står jo endel fint om AVR i denne tråden men jeg lurer jo på om det fortsatt er like aktuelt i dag som i 2007. Håper å komme i gang for ikke alt for mange hundrelappene så jeg lurer på om det er realistisk å få tak i det jeg trenger til den prisen.

 

Jeg har programmert litt av hvert av div språk før og er ikke helt blank på elektro heller(mangler etseutstyr og scope, har veroboard og loddebolt ;) )

 

Noen forslag?

Lenke til kommentar
Det står jo endel fint om AVR i denne tråden men jeg lurer jo på om det fortsatt er like aktuelt i dag som i 2007. Håper å komme i gang for ikke alt for mange hundrelappene så jeg lurer på om det er realistisk å få tak i det jeg trenger til den prisen.

Tja, Arduino koster jo under 200 hos SparkFun:

http://www.sparkfun.com/commerce/product_i...products_id=666

Og det finnes Arduino og kloner som byggesett også. Se på Wikipedia:

http://en.wikipedia.org/wiki/Freeduino

 

Dersom du bare skal ha selev microcontrolleren, så vil jeg tro at du kan få den billigere. Futurlec for eksempel har en bråte Atmel (AVR og andre):

http://www.futurlec.com/ICAtmel.shtml

Lenke til kommentar

Hvor mye mer trenger jeg enn mikrokontrolleren? Hvis jeg plasserer en på et testbrett, hvor mye trenger jeg i tilegg? Strømforsyning, drivere til releer, hva mer? En måte å laste inn programmer på, er det grei skuring å få til med en seriellkabel og et terminalprogram/programmeringsmiljø?

 

 

Hyggelig pris på TinyAVR forresten, hvis det går an å bruke den i et hobbyprosjekt sånn uten videre tror jeg at jeg går for den. :)

 

 

 

Edit: Det ser ut som de fleste av mine spøsmål blir besvart i denne tutorialen. Jeg får komme tilbake med fler spørsmål når jeg har lest den. :)

http://imakeprojects.com/Projects/avr-tutorial/

Endret av Kahuna
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...