Nybörjarfrågor: AVR/PIC, Servo, Temperatur

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
toffie
Inlägg: 1913
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Nybörjarfrågor: AVR/PIC, Servo, Temperatur

Inlägg av toffie »

Hej alla glada elektronik-kunniga!

Jag har under en längre tid funderat ihop ett projekt som jag nu vill försöka genomföra.

Det är så att jag vill bygga ett kretskort med en processor som, till en början,
kontrollerar ett servo (vinkel) och en motor (rotation).

Dessa två skall i slutändan kontrolleras av en joystick men även här, till en början,
kommer det vara fyra stycken tryckknappar / strömbrytare som agerar kontroller.

Eftersom jag skriver på detta forum så har ni säkert listat ut att jag behöver lite
hjälp och då är det med vad jag ska använda för byggnation och programmering.

Jag har arbetat med att plocka bort komponenter för att ersätta dem med nya och jag
har kunskaper i både yt och hålmontering. Jag har byggt enklare saker själv som ex.vis
en liten modul baserad på timer kretsen NE555 och lite sådant. Men inget så här
avancerat.

För programmeringen så vet jag ju givetvis att det handlar om ett helt annat språk,
men jag har arbetat i flera år med utveckling av webbsajter i PHP så jag har kunskapen
om hur programmering fungerar och anser att jag har relativt lätt att lära mig nya språk.

Nedan följer frågor i en enkel följd så jag hoppas det blir lätt att svara på det ni kan.


Frågor
1. Vad ska jag använda för processor? AVR eller PIC? Jag har fått för mig att en AVR
har fler in/ut gångar och ska vara lättare att arbeta med än vad PIC är? Vilken kan ni
rekommendera för mitt projekt?

2. Vad ska jag använda för att programmera processorn? Går det att använda billigast
möjliga eller ska man satsa lite pengar och köpa en dyrare?

3. En motor kan ju, och jag vill att ju att den ska det, gå i båda riktningarna. Hur styr
man detta, programmeringsmässigt i processorn? Byter man bara på polerna på nåt sätt
eller hur fungerar det?

4. Servon har jag förstått ska man ge pulser. Dessa pulser ska se ut på ett speciellt
sätt och när man ger dem ett värde så arbetar den för att uppnå detta värde, därav
så ändras vinkeln. Eller hur?

Men måste man aktivt ligga och pumpa ström in i servot för att det ska bibehålla vinkeln
eller stannar det på angivet läge när man tar ifrån strömmen? Jag menar om man jämför
med en rc-bil så går ju servot tillbaka till noll-läge, men det är receivern som gör detta?

5. Finns det någon som vet något om släp-kontakter eller liknande? Eftersom den
”plattform” som motorn skall driva ska kunna gå långt mer än 360 grader så kan det ju
bli lite jobbigt om man måste bygga in 20 kilometer kabel i projektet bara för att försäkra
sig om att sladdarna inte trasslar ihop sig ;)

Gärna något hållbart och så underhållsfritt som möjligt.

6. Vad är det för programmeringsspråk man använder för processorerna och finns det
sajter med exempelkod som man kan testa för att lära sig? Jag har alltid varit sådan som
lär sig genom att titta på existerande kod snarare än att ligga och läsa 700 sidor
med information.

7. Förmodligen går detta, men bara som en bekräftelse. Går det att bygga in en
temperatursensor som processorn läser av ex. var trettionde sekund och om
temperaturen går över en gräns så startas en extern komponent? ex.vis värmare / kylfläkt.

8. Vidare så har jag funderingar på att implementera fler externa funktioner som ex.vis
ett gyro. Kan man på något sätt då använda gyrot för att ställa in en startpunkt och
snabbt återgå till detta mha. processorn som styr servot och motorn och jämför värdena
från startpunkten mot gyrot? Förstår ni?

9. Om jag skulle vilja kunna styra servot och motorn via ex.vis datorn och kanske ändra
hastigheten via ett program som jag skriver till projektet, går det att spara dessa
ändringar i processorn eller på ett externt minne eller åtminstone använda dem
on-the-fly från programmet mot processorn?

10. Finns det någon som vet vad ut-data blir från en joystick? Kan man koppla in en
sådan, om man hittar någon, på samma sätt som ex. fyra stycken strömbrytare?

Några frågor så här i starten och fler lär det bli när jag lyckas komma på tillräckligt bra sådana. ;)

Jag tackar på förhand och tänk på att ni behöver inte skriva några avhandlingar, korta
svar räcker gott och väl, behöver jag mer information så får jag fråga.

// Chris
Användarvisningsbild
Icecap
Inlägg: 26763
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

0: Välkommen!

1: Uj uj uj... först och främst är antalet I/O inte speciellt beroende av PIC/AVR, det är beroende av kapseltyp. Och att AVR skulle vara lättare än PIC... låt oss bara säga att det finns en ständig diskussion om detta, vissa gillar A, andra gillar B och sanningen är väl att båda A och B är "lika OK". Själv föredrar jag Renesas men använder PIC till vissa "småsaker". Smaken är som baken.

2: Om du menar enheten som överför programmet till processorn vill jag definitivt rekommendera WISP648 (som säljs av sodjan) om du väljer PIC. En bra programmeringsenhet (EJ Velleman!) är själva stommen i ett vällyckad projekt, snåla inte men köp inte dyrt för "dyrts" skull.

3: H-brygga + PWM, bra sökord till Google. En sökning på detta forum skulle också ge en del hits. Sedan kan vi gå vidare.

4: Pulser på 1ms = ena ytterläge, 2ms = andra ytterläge, 1,5ms = mittläge. Dessa "bör" upprepas med ung. 20ms mellan för att servon ska "hålla fast" läget, vissa kan skicka t.ex. 20 pulser med nya läget och sedan slå ner men då kommer servon (RC-servo) inte att kompensera om något drar den ur position.

5: Finns nog men jag har inget detaljkännedom.

6: Assembler är mycket bra för att komma igång och lära sig hur en processor fungerar och C är bra när man har kommit över det punkt men återigen: smak och tycke... Jag kör C till nästan allt, jag har å andra sidan börjat med assembler 1983 på Z80 och anser mig kunna detta...

7: Finns redan färdigt i en Maxim-krets, den kan du dels läsa av och dels programmera in gränsvärden som gör att den styr själv.

8: Det är en ren programmeringsfråga och självklart kan du styra på det vis men du behöver nog bli en skaplig programmör för att få det att hänga ihop.

9: De flesta mikroprocessorer (µC) har en form av inbyggd EEPROM just till att spara värden och ändra dom lite då och då så självklart kan du spara dessa. Med spara menar jag "icke-flycktigt" alltså även vid spänningsavslag.

10: Vilken joystick? De RC-joystick jag har sett är potentiometra med en pinne, dom jag har sett till industriell användning kan vara antingen potentiometer eller spänning ut. Att en gör på ett visst sätt betyder inte att alla gör lika, alltså måste du definiera VILKEN joystick du menar. Om det rör sig om potentiometra kan du koppla in varje axel på en A/D-ingång och låta processorn avläsa sekventiellt och sedan reglera baserat på dessa värden, de flesta µC har 8 st A/D-ingånger eller fler..
Användarvisningsbild
Tony
Inlägg: 1038
Blev medlem: 9 november 2003, 16:08:47

Inlägg av Tony »

10.
Du kan inte ersätta en strömbrytare med en potentiometer, däremot så finns det industriella joystick med brytare.

Om du menar joystick till PC-gameport så är det en potentiometer på 100kΩ kopplad som reostat.

Reostat innebär variabel resistans dvs. man ansluter bara 2 pinnar.
Det är samma komponent oavsett om den är kopplad som potentiometer(spänningsdelare) eller reostat (undantag finns, men ovanligt).

Här har du pinout för en PC-gameport joystick.
Knapparna är kopplade mot jord.
Potentiometrarna är kopplade mot Vcc (+5V).
För att få variabel spänning kopplar du alltså den tredje anslutningen på poten till jord.

JoyStick Pin Out
Pin No. Signal Name Description
1 +5v Power
2 A Right Button Joystick/A Right Button
3 A/ X-Position Joystick/A X-Coordinate
4 Signal GND Ground
5 Signal GND Ground
6 A/ Y-Position Joystick/A Y-Coordinate
7 A Left Button Joystick/A Left Button
8 +5v Power
9 +5v Power
10 B Right Button Joystick/B Right Button
11 B/ X-Position Joystick/B X-Coordinate
12 MIDI Out MIDI Output
13 B/ Y-Position Joystick/B Y-Coordinate
14 B Left Button Joystick/B Left Button
15 MIDI In MIDI Input
Användarvisningsbild
toffie
Inlägg: 1913
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Inlägg av toffie »

först och främst måste jag tacka för båda helt suveräna svar!
både för uppfräschning av namn på olika saker men även mycket nytt så
det känns redan som jag lärt mig en massa! :)

sen måste jag ju säga tack för välkomnandet, även fast kanske kontot
är gammalt ;) hehe.. men det är väl först nu jag planerat att besöka
forumet oftare.

då ska vi se..
1. förr i tiden var jag lite familjär med PIC för en på jobbet kunde arbeta
lite med sådana.. nu har jag på nåt sätt blivit mer kär i AVR.. så om ingen
säger något speciellt att det inte fungerar för mitt projekt så tänkte jag
köra på en atmel processor.

om jag då kör med den ”lättare” hålmonterade versionen av en processor när
jag utvecklar kan jag då bara lägga över programmet i en ytmonterad när
programmet är klart och jag ska bygga ihop ett så litet kretskort som möjligt?
Förutsatt att jag använder samma typ av krets fast i annan monteringsversion..

Låt säga att jag exempelvis väljer följande krets;
http://www.atmel.com/dyn/resources/prod ... /2513S.pdf
  • ATMEGA32
    32-Kbyte self-programming Flash Program Memory
    2-Kbyte SRAM
    1-Kbyte EEPROM
    8 Channel 10-bit A/D-converter
    JTAG interface for on-chip-debug
    Up to 16 MIPS throughput at 16 Mhz
    2.7 - 5.5 Volt operation.
Det jag förstår här är att processorn har 1024 Byte ”minne” för att spara
on-the-fly information och exempelvis inställningar för servot’s hastighet?
Det blir väl i runda slängar runt 1000 tecken?

Men vad är SRAM och 16kByte self-programming flash program memory?
Det senare, är det där man lagrar själva programmet i processorn?

Om man tittar på tidigare nämnd PDF på sidan 12 så hittar man
temperaturområdena. Eftersom jag vill kunna köra elektroniken helt säkert
även på vintern med minusgrader så vill jag givetvis ha en industri klassad
krets och vill bara konfirmera att ”hålmonterade” kretsar är xPx och ytmonterade,
normala ytmonterade dvs, är xAx?

Ser ut som så på bilderna, men bara ifall någon vet så får ni gärna lägga in ett ord :)

Jag kollade in en väldans massa produkter på Lawicel och hittade bland annat
produkten med artikelnumret ”StAVeR24-M32”. Vad denna gör vet jag inte riktigt,
men det står att den inte innehåller någon ”interpreter”, vilket bör vara
programmet i processorn som läser av mitt program som jag skriver, eller hur?

Gäller det även ”tomma” processorer som om jag skaffar en Atmega32?
Hur fungerar sådant, måste jag skriva eller lägga in det eller är det helt fel?

På första sidan i stort sett längst upp står även att processorn innehåller
131 avancerade instruktioner, kan man jämföra detta med funktioner som man kan
kalla på för att göra olika saker?

Det står även för denna processor att den har 8 A/D converters, är det de
A/D ingångar som Icecap skriver i svar på fråga #10 ?

2. Tänkte mig att jag kunde köpa en STK500 som jag sedan kan bygga ut med en
STK501 för att programmera ytmonterade, förmodar att det stämmer? Invänd annars..

3. Ok, sökte på google och hittade mig lite information, ex här:
http://moffa.nu/stiff/robot/hbrygga.html
Denna bör inte vara några problem att bygga, men är det en sådan jag behöver alltså?
Hur kopplar jag denna mot processorn då? SIGNAL1 mot en ut pin på processorn och
SIGNAL2 mot en annan? Plus SIGNAL3 mot en tredje pin för hastigheten på motorn?

Vad är för övrigt PWMGND för något? Det verkar ju inte vara samma som GND,
så är det något jag missar? Eller är det till SIGNAL4?

4. ahh ok, så servona måste alltid vara strömförsörjda för att hålla rätt position?
Så, som du säger om ex. det som finns på plattformen som servot ska vinkla är något
för tungt för att servot ska kunna hålla det på plats i strömlöst läge så ”välter”
det hela? Konstigt förklarat kanske, men kanske går att förstå?

5. Får kolla vidare på denna punkt, det borde ju finnas något bra och
underhållsfritt att använda :)

6. Programmering igen då.. Assembler är väl själva grunden för hårdvara?
Och sen kör man C utanpå det eller? Vad utvecklar man i för program? Är det
AVR Studio man skriver i eller är det bara ett program för att överföra koden
till processorn?

7. ”i en Maxim krets”, med det menas att det är en speciell krets på vilket sätt?
Att det är Maxim som gör dem, att det är hålmonterade eller vad betyder det? Är
inte helt hemma än ;)

8. bara en tanke, blir kanske inte av ;) man vet aldrig :D

9. Låter underbart! Lite inställningar borde väl eepromet klara av, låt säga att
man kanske har en 20 rader med 10 tecken max på vardera, det är väl lugnt?
Brukar man spara något annat i eeproms? Kan vara kul att veta vad andra
använder det för också :)

10. Detta blir ett svar till er båda.
Ja där kände jag nog lite att jag inte visste vad jag pratade om, men nu har jag
lärt mig lite mer tack vare er! Det jag är ute efter då är väl en industriell joystick
som är 2 axlad. Det betyder väl att man får hela skalan. dvs; N NE E SE S SW W NW..

Den ska också alltså vara byggd med potentiometrar för då blir det väl förresten
så man kan ”smyga” om man bara rör lite på joysticken. Strömställare är ju
knappar och då får man antingen eller och det betyder väl egentligen ingen
möjlighet att ställa in hastigheten?

Kör man med potentiometrar så kanske de fungerar som riktiga hastighetskontroller?
Men att man i programvaran kan sätta max och min värde för hastigheten?
Tänker jag rätt?

Sista för idag blir, vart kan jag få tag på industriella (icke mastodonta) joystickar?
Se vänstra på bild för min tanke av joystick utförande, ser lagom hög ut och
”coolhetsfaktorn” verkar rätt ok ;)

Den är väl bland de billigaste också som finns, men frågan är om ”induktiv” är
min grej? Det är det inte va? Eller skulle jag kunna använda en sådan här också?
Annars, vart finns det fler som inte kostar flera tusen?
*host* kolla andra hos elfa *host* :D

Sök på joystick hos Elfa så får ni se på dyra leksaker ;)

Däremot, om någon vet vart det finns en tre axlad joystick, dvs en axel i
”huvudet” också, så skulle det vara ballt förstås ;) För en av de som Elfa
har som är tre axlad kostar över 3000 ;)

Det gör visserligen inte den jag länkat till, men kan det inte finnas
joystickar som ligger på 300kr eller nåt?

// Chris
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

AVR är ett bra val, de är lätta att ha och göra med. Köp STK500 och ladda ner mjukvaran (AVR-studio och WinAVR) så är det bara att börja koda. Du kan använda AVR-studio även som editor, men personligen tycker jag inte den är så trevlig utan jag använder AVR-studio enbart för att progga kretsen.

Guide
Användarvisningsbild
Icecap
Inlägg: 26763
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

då ska vi se..
1. förr i tiden var jag lite familjär med PIC för en på jobbet kunde arbeta
lite med sådana.. nu har jag på nåt sätt blivit mer kär i AVR.. så om ingen
säger något speciellt att det inte fungerar för mitt projekt så tänkte jag
köra på en atmel processor.

om jag då kör med den ”lättare” hålmonterade versionen av en processor när jag utvecklar kan jag då bara lägga över programmet i en ytmonterad när programmet är klart och jag ska bygga ihop ett så litet kretskort som möjligt? Förutsatt att jag använder samma typ av krets fast i annan monteringsversion..

- Jupp, det ENDA som skiljer är då kapslingen, innehållet är exakt det samma.

ATMEGA32
32-Kbyte self-programming Flash Program Memory
2-Kbyte SRAM
1-Kbyte EEPROM
8 Channel 10-bit A/D-converter
JTAG interface for on-chip-debug
Up to 16 MIPS throughput at 16 Mhz
2.7 - 5.5 Volt operation.

Det jag förstår här är att processorn har 1024 Byte ”minne” för att spara
on-the-fly information och exempelvis inställningar för servot’s hastighet?
Det blir väl i runda slängar runt 1000 tecken?
- Njaaa... EEPROM betecknas som icke-flyktigt minne, du kan alltså spara värden, slå av processorn, slå på (mycket) senare och det kan hämtas fram igen.

Men vad är SRAM och 16kByte self-programming flash program memory?
Det senare, är det där man lagrar själva programmet i processorn?
- SRAM är statisk RAM och RAM är själva arbetsminnet till värden osv.
- Flash är själva programminnnet, det kan raderas och omprogrammeras medan processorn kör men det är knepigt och bör bara användas när ganska speciella behov finns.

Jag kollade in en väldans massa produkter på Lawicel och hittade bland annat produkten med artikelnumret ”StAVeR24-M32”. Vad denna gör vet jag inte riktigt, men det står att den inte innehåller någon ”interpreter”, vilket bör vara programmet i processorn som läser av mitt program som jag skriver, eller hur?
- Om du skriver ett "riktigt" program behövs ingen "interpeter" och om du använder assembler eller C-kompiler blir det ett "riktigt" program.

Gäller det även ”tomma” processorer som om jag skaffar en Atmega32?
Hur fungerar sådant, måste jag skriva eller lägga in det eller är det helt fel?
- Se föregående svar, du behöver dock en programmeringsenhet som är stabil och ISCP, då kan du plugga in den och omprogrammera utan att flytta processor fram och tillbaka.

På första sidan i stort sett längst upp står även att processorn innehåller
131 avancerade instruktioner, kan man jämföra detta med funktioner som man kan kalla på för att göra olika saker?
- Nej men vissa funktioner som man vill programmera kan behöva färre instruktioner för att utföras.

Det står även för denna processor att den har 8 A/D converters, är det de
A/D ingångar som Icecap skriver i svar på fråga #10 ?
- Nej, det står att den har 8 st kanaler vilket betyder att det finns 1 st AD-omvandlare med en 8-till-1 ingångsväljare mellan, just precis som jag beskrev tidigare.

2. Tänkte mig att jag kunde köpa en STK500 som jag sedan kan bygga ut med en STK501 för att programmera ytmonterade, förmodar att det stämmer? Invänd annars..
- Kör inte med AVR, vet ej.

3. Ok, sökte på google och hittade mig lite information, ex här:
http://moffa.nu/stiff/robot/hbrygga.html
Denna bör inte vara några problem att bygga, men är det en sådan jag behöver alltså?
- Det beror på vad du vill göra. Den koppling kan styra en DC-motor fram och back.

Hur kopplar jag denna mot processorn då? SIGNAL1 mot en ut pin på processorn och
SIGNAL2 mot en annan? Plus SIGNAL3 mot en tredje pin för hastigheten på motorn?

Vad är för övrigt PWMGND för något? Det verkar ju inte vara samma som GND, så är det något jag missar? Eller är det till SIGNAL4?
- Titta på T7 och skåda ljuset.

4. ahh ok, så servona måste alltid vara strömförsörjda för att hålla rätt position? Så, som du säger om ex. det som finns på plattformen som servot ska vinkla är något för tungt för att servot ska kunna hålla det på plats i strömlöst läge så ”välter” det hela? Konstigt förklarat kanske, men kanske går att förstå?
- Självklart kan de inte hålla något utan ström men utan pulser (också) kommer de inte att reglera något heller. Så slå på strömmen och du kan vrida dom som du vill men med ström OCH pulser håller de emot.

6. Programmering igen då.. Assembler är väl själva grunden för hårdvara?
Och sen kör man C utanpå det eller? Vad utvecklar man i för program? Är det AVR Studio man skriver i eller är det bara ett program för att överföra koden till processorn?
- AVR Studio är väl en IDE(?) som man kan integrera en C-kompiler i.

7. ”i en Maxim krets”, med det menas att det är en speciell krets på vilket sätt? Att det är Maxim som gör dem, att det är hålmonterade eller vad betyder det? Är inte helt hemma än.
- Kolla in på Maxim's hemsida

9. Låter underbart! Lite inställningar borde väl eepromet klara av, låt säga att man kanske har en 20 rader med 10 tecken max på vardera, det är väl lugnt? Brukar man spara något annat i eeproms? Kan vara kul att veta vad andra använder det för också.
- Jag använder det enbart för att spara kalibreringsdata, inställningar och dylikt, text sparar jag i flash-minnet. Och sedan använder jag en annan processor också... vilket kanske inte har stor betydelse.

10. Detta blir ett svar till er båda.
Ja där kände jag nog lite att jag inte visste vad jag pratade om, men nu har jag lärt mig lite mer tack vare er! Det jag är ute efter då är väl en industriell joystick som är 2 axlad. Det betyder väl att man får hela skalan. dvs; N NE E SE S SW W NW..

Den ska också alltså vara byggd med potentiometrar för då blir det väl förresten så man kan ”smyga” om man bara rör lite på joysticken. Strömställare är ju knappar och då får man antingen eller och det betyder väl egentligen ingen möjlighet att ställa in hastigheten?

Kör man med potentiometrar så kanske de fungerar som riktiga hastighetskontroller? Men att man i programvaran kan sätta max och min värde för hastigheten?
Tänker jag rätt?
- Inte helt rätt. Du tänkar direkt styrning men det du ska tänka är att du kan ge vissa input till din processor och DU bestämmer vad den ska göra med dom.

- Joystick med kvalitet KOSTAR skjortan, en bondgård + en guldtacka.
Användarvisningsbild
toffie
Inlägg: 1913
Blev medlem: 22 juli 2004, 21:38:07
Ort: Töreboda / Stockholm
Kontakt:

Inlägg av toffie »

thepirateboy
Tackar både för informationen och guiden, dock var den väldigt inkomplett annars
hade den varit helt underbar. Finns det inte fler guider som denna?

WinAVR fick jag inget grepp om alls, flera olika program och inget direkt huvudprogram?
AVR Studio såg ju mer ut som ett program jag kan arbeta i, skriva kod och se lite hur
”processorn” reagerar. Lite som andra programmeringsprogram helt enkelt..


Sen till mina frågor
1. Underbart :) ett hinder mindre ;)

Men.. ”En programmeringsenhet som är stabil”..
Jag tror väl inte fel att STK500 skall vara en stabil sådan?

3. När det gäller H-bryggan så jo, jag vill styra en DC motor framåt och bakåt.
Mycket mer än så kan man väl inte göra med en motor? Så då är det en sådan jag
ska bygga in på kortet jag ska konstruera alltså?

Sen T7, är det här man ”skapar” PWMGND alltså? Är det så enkelt?

4. Ok, hur pass hållbara blir servona om man har dem strömförande 24/7?

6. Ok, så den kod jag sett i AVR Studio, exempelvis;

Kod: Markera allt

#include <avr/io.h>
 
int main (void) {
 
	uint32_t i = 0;					//(2)
	DDRD  = 0xff;
 
	while(1) {
		PORTD = 0b11110000;
		for(i=0; i < 10000; i++);	//(6)
		PORTD = 0b00001111;
		for(i=0; i < 10000; i++);
	}
 
	return 0;
}
det är Assemble då, eftersom jag inte integrerat en C-kompiler?

Detta får väl kanske någon AVR kunnig svara på, om inte Icecap känner igen sig ;)
Om man tittar i AVR Studio när man laddat igång ovanstående kod så lägger sig
PIND på 0x0F. dvs. de sista fyra pinnarna är svarta och därmed utgångar?

När PORTD går över och blir enligt koden 0x0F då släcks väl lysdioderna som är
inkopplade där? Och när PORTD blir 0xF0 så tänds lysdioderna? Stämmer det?

7. Ahh ok, så det var företaget ;) Jag kände ju igen namnet, men tänkte att det
kanske var ett smeknamn för något speciellt också. Då får jag leta fram
lämplig komponent där :D

10. Aaah jo, det förstås ja. Tänkte förmodligen i de banorna men att jag inte
formulerade mig rätt kanske. Givetvis går informationen från potentiometrarna
via programvaran och där måste man vidarebefordra informationen i rätt ”format”
så servot och motorn förstår vad man vill göra.

Ok, men om jag inte har varken en bondgård eller guldtacka då? :O
hehe, men ok jag förstår. Men det måste finnas billigare saker också.

Vad betyder induktiv då? För det är ju inte potetiometer åtminstone och inte
tryckströmbrytare för då skulle det ju stå det. Är det något helt annat då?
Skulle jag kunna använda en sådan joystick eftersom den ”bara” kostar runt 750kr..?

Eller är det lättare med något annat? Kanske någon gammal amiga joystick med två
knappar skulle kunna tjänstgöra som joystick, de brukar ju ha potentiometrar, eller hur?
Så där tänker jag även att, det borde ju finnas billigare, nästan gratis
joystickar att få tag på också?


Nu vill jag även efterfråga två färdiga saker..
Första är;
Finns det någon färdig kod för AVR som man kan köra i AVR Studio emulatorn där man
tänker sig att man har ett färdigt kretskort med ex. 3 knappar och när man trycker
på en knapp så ska en tillhörande lysdiod tändas på en annan ”port”, finns det någonstans?

Jag tycker att jag har letat runt på AVR Freaks men det jag hittat har inte gått att
ladda i AVR Studio. Sen undrar jag ifall man kan köra programmet i AVR Studio som om
AVR processorn själv skulle köra det, så ex. om jag trycker på en knapp så ”tänds
lysdioden" direkt?

Istället för att man ska steppa sig igenom, det känns inte riktigt som om man får en
riktig programfunktion när det inte flyter på. Förstår ni? Jag har provat Run i
programmet efter jag startat debug funktionen, men ingenting verkar hända..

Andra är;
Jag skulle vilja ha ett basic, basic schema. Precis det man behöver för att komma igång
med en AVR processor på ett kretskort. Matning, processor.. vad mer?

Behöver man ha kristaller, motstånd nånstans osv?

Efter att ha sett två scheman, och enligt Eagle blivit tvungen att koppla på detta sätt
med +5V hit och dit samt GND lite här o var så undrar jag om detta stämmer?
http://swemod.com/avr/1.jpg

Fortfarande får jag dessa felmeddelanden;

Kod: Markera allt

WARNING: Sheet 1/1: POWER Pin IC1 AGND connected to GND
WARNING: Sheet 1/1: POWER Pin IC1 AVCC connected to +5V
WARNING: Sheet 1/1: POWER Pin IC1 AREF connected to +5V
WARNING: Sheet 1/1: POWER Pin IC1 VCC connected to +5V
Är det fel med det eller är det bara upplysningar?


Sen måste jag nog ta och efterfråga en liten guide eller bra beskrivning över hur
signaltransistorer fungerar. Jag kan ingenting om NPN/PNP, de kan enligt mig när
jag tittar på ex. BC327 och BC337 på Elfa vara identiska förutom att det står PNP för BC237
och NPN för BC337.

Hur ska ex. BC337 sitta på T7 på H-bryggan som $tiff har ritat? Ska den platta sidan vara
mot det feta strecket då eller? Och i sådant fall, är det alltid ”så”?

Sen vet jag inte riktigt hur T1-4 fungerar heller, en vild chansning; se T1, är Source
mot +12V då? sen Drain i mitten och Gate mot motorn? Ska R1 även vara kopplad mot alla
tre pinnarna på T1? Blir det inte liksom kortslutning då eller hur tänker man där?
Har inte tidigare sett den symbolen alls. *skäms*

Det verkar som om jag lyckas förstå att IRF510 åtminstone är för positiv Volt,
dvs ”framåt” då kanske och IRF9520 är för negativ Volt, om man får säga sådant?
och därmed driver motorn bakåt..


Jag vet att jag tidigare använt 7805 för att begränsa utvolten till 5V och den är ju
väldigt lätt att lära sig igen hur den fungerar om man glömmer bort.
http://www.elfa.se/images/highres/h20621.jpg

GND är ju självklar, Input får ex. 12V och från Output får man 5V, svårare än så är
ju inte sådana komponenter. För det är väl en typ av transistor också, eller är jag
helt borta nu? Är det kanske ”bara” en spänningsregulator?

Men signaltransistorer, det tycker jag är omöjligt :P Så om ni sitter på någon bra
information, dela gärna med er!


Detta blir väl kanske ett av de sista inläggen av mig i tråden, sen börjar jag bli
så pass ”kunnig” att jag måste separera och ta det i separata delar av forumet tror jag :D

Jag måste igen säga att det är hur roligt som helst när man får så här bra hjälp,
det har aldrig kännts roligare att hålla på med projektet än nu ;) givetvis kommer
det komma tråkiga perioder också, men med så här bra hjälp så kan de inte bli långvariga ;)

// Chris
Användarvisningsbild
Icecap
Inlägg: 26763
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

1: STK500 bör vara skaplig stabil men jag har ingen erfarenhet.

3: Ska och ska... den uppfyller den funktion du behöver och det kan då vara bra att ha den med. Du FÅR men MÅSTE inte. Man styr T7's bas med ett PWM-signal och den "skapar" sedan PWMGND-signalen.

4: Slitaget har med antal rörelser att göra och minimalt med spänningssatt tid att göra så frågan är på sätt och vis fel, du frågar efter äpplen och vill veta svaret i banan.

6: Det är C-kod.

7: Maxim har många roliga och trevliga kretsar.

10: Induktiv betyder "med spolar" men då jag inte ser datablad kan jag inte svara på vad det kan. Induktiv betyder med skaplig säkerhet beröringsfri avkänning (vilket är bra, inget slitage) men om det är av/på eller analogt kan jag inte svara på, det kräver länk till datablad.

En 7805 (78xx) är en aktiv spännngsregulator med intern strömbegränsare, spänningsreferens, signalförstärkare och drivsteg, alltså en bra bit mer än "en transistor". Man måste(/bör) även ha en kondensator på ingången och utgången, placerat nära 78xx'en, för att stoppa självsväng men det står i databladet.

Rörande transisrorernas anslutningar vill jag hänvisa till ELFA som har bilder och data till förbannelse, ingen anledning att beskriva vad som redan finns tydligt och klart.

Ett solitt tips inför bygge av grejer: AVKOPPLING!!!!
Min grundregel är att ALLA digitala kretsar få sin egen 100nF keramiska kondensator över spänningsmatningen med så korta ledare som möjligt och då menar jag MINST 1 st per digital krets! Fler skadar inte!

Detta hindrar en del felfunktioner som beror på störningar, ska man utveckla program är det rikligt annat som kan gå fel och att konstruktionen stor ut sig själv är INGEN hjälp alls! Skillnaden kan stå och falla med 2 st rätt placerade kondensatorer och visst kostar de men efter 3 dagars skriande av frustration över ständiga fel är det ett mycket lågt pris att montera dom från början.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

WinAVR är en samling små program som man normalt som nybörjare inte behöver förutom kompilatorn avr-gcc som du måste ha för att kunna kompilera C-program.

För att kolla en ingång

Kod: Markera allt

if(PINC & (1<<PC2))				// Om pinne 2, PORTC hög
{
	PORTB |= (1<<PB1);			// PB1 hög
}
else
{
	PORTB &= ~(1<<PB1);			// Annars låg	
}



if(!(PINC & (1<<PC3)))			// Om pinne 3, PORTC låg
{
	PORTB |= (1<<PB2);			// PB2 hög
}
else
{
	PORTB &= ~(1<<PB2);			// Annars låg	
}
Du kan titta lite på Olimexscheman för inkopplingsexempel. Följ deras koppling så ska det fungera (resetkretsen, optoingngarna, reläutgångarna och serieporten kan du skippa) Länk
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

toffie:
> Om man tittar i AVR Studio när man laddat igång ovanstående kod så lägger sig
PIND på 0x0F. dvs. de sista fyra pinnarna är svarta och därmed utgångar?

När PORTD går över och blir enligt koden 0x0F då släcks väl lysdioderna som är
inkopplade där? Och när PORTD blir 0xF0 så tänds lysdioderna? Stämmer det?


Bitarna i PIND är bara intressanta när motsvarande bitar i DDRD är satta som ingångar, vilket dom inte är det här fallet. Koden läser ju inte in något.

DDRD - Bestämmer riktningen på port D (in eller ut)

PORTD - Avgör om utgångarna på port D ska vara höga eller låga. Eller pullup eller inte om porten är satt som ingång.

PIND - Läses av för att se om ingångarna är höga eller låga.

DDR, PORT och PIN består ju alla av 8 bitar. Varje bit motsvarar en pinne på kapseln. Var väldigt noga med att du lär dig manipulera enskilda bitar. Alla funktioner i µC:en styrs genom att sätta rätt bitar i rätt register. Lär dig hur du sätter en bit genom OR (| i C), nollställer genom NOT och AND (~ och & i C) och växlar värdet på en genom XOR (^ i C). Skift av bitar är också nödvändigt att förstå (<< och >> i C).

Ex.
DDRD = 0x40;
DDRD = DDRD | (1<<PD0);
DDRD = DDRD & ~(1<<PD0);
DDRD = DDRD ^ (1<<PD0);

eller lite förenklat:
DDRD = 0x40;
DDRD |= (1<<PD0);
DDRD &= ~(1<<PD0);
DDRD ^= (1<<PD0);

Skriv ner de binära värdena för DDRD och PD0 och utför de binära operationerna |, ~, &, << och ^ med papper och penna. Sen när du har förstått det så behöver du knappt tänka i fortsättningen. :)

Sen bör du lägga in nyckelordet "volatile" innan "uint32_t i = 0" för att, de enligt kompilatorn onödiga, tomma looparna med "i" inte ska optimeras bort.
Skriv svar