Start

Förstasidan
Statistik

Social robot

Robotens syn
Modell/simulator
Levande modell


Arduino

Starta upp Arduino
DCcduino UNO
Pro Mini

Raspberry pi

Om Raspberry

Pic32

Om Pic32
Konstruktionen
Praktisk kom-igång
Starta upp UBW32
Installera MPLAB
Rinnande ljus
Stegmotor
Display
RS232 Pic32 - terminal
Luffarschack

Servo

Överblick
Isärmonterat servo
Styrning av servo
Mini Maestro
Bygga ett servo

Elektronik

Open Collector
Kontaktstuds
Drivsteg på utgångarna
Halleffektsensor/switch
MLX90316 (halleffekt)
Pulsbreddsmodulering

Open CV

Om OpenCV

Matematik

Linjär algebra
Olinjär länkmekanism

Pic32
Om kretsen
Microchip Pic32 är en familj kraftfulla microcontrollers, baserade på MIPS32® M4K® kärna, som skulle kunna passa ett mekatroniskt projekt som detta. Det finns många in och utgångar för att styra motorer och hämta in data från kameramoduler, AD-omvandlare för att läsa av lägesgivare, möjlighet till seriekommunikation med omvärlden och mycket mer. Allt detta i en liten krets programmerbar via t.ex. MPLAB's c-kompilator. Pic32'an snurrar med 80 MHz så den är hyffsat snabb och - lite beroende på vilken modell man väljer - ett primärminne (flashminne) på ungefär mellan 32 och 512 Kbyte och program/dataminne på 32-128 Kbyte. Det finns egentligen bara ett uppenbart fel med denna krets. Den är så liten och har så många ben att den är praktiskt omöjlig att arbeta med. Man är därför som hobby-nisse utlämnad till något av de kretskort som gör dess pinnar åtkomliga. Lyckligtvis har det börjat dyka upp en hel del olika kort med denna processor (se längst ner).

Lite specifikationer
pic Klockfrekvens: 80MHz
Flash (beroende på krets): 32-512 KB
RAM (beroende på krets): 32-128 KB
DMA-kanaler (beroende på krets): 0-8 kanaler
A/D-kanaler: 16 stycken
A/D bitar upplösning: 10 bitar
Komparatorer: 2 stycken
Timers: 5x16 bitar och 1 eller 2 32-bitar beroende på krets
Capture/Compare: 5 input capture
PWM: 5 std. PWM
UART (beroende på krets): 2-6 st.
SPI (beroende på krets): 2-4 st.
I2C (beroende på krets): 2-5 st.
CAN Modules (beroende på krets): 0-2 st.
USB 2.0: Krets MX420 och uppåt
Ethernet 10/100 Base-TX Mac: Krets MX675 och upp.

Det som skiljer mellan de olika varianterna av Pic32 är alltså förutom storleken på minnet, antal DMA-kanaler, hur många serieportar den ska ha samt om man vill ha USB och/eller ethernet.

pic32

Olika sätt bekanta sig med Pic32
Pic32 Starter Kit
Ett enkelt överkomligt sätt bekanta sig med denna processor är Pic32 Starter Kit.

Detta består av ett kretskort som förutom Pic32 bl.a. innehåller 3 knappar och 3 lysdioder. Inget banbrytande men tillräckligt för att knacka lite kod i MPLAB, tanka över det till kretsen, och se att det fungerar. Dessutom en krets PIC18LF4550 USB Microcontroller som tar hand om USB och gör att du inte behöver någon programmerare. Det räcker att koppla ihop detta kretskort med datorn.

Det går att plugga in USB direkt i vissa varianter av Pic32'an men för att programmera kretsen den vägen måste du då först förse Pic32 med en bootloader.

pic32 starter kit

Rinnande ljus på Pic32 Starter Kit
Jag köpte naturligtvis ett Pic32 starter och här nedan är att mitt testprogram. Det får de tre lysdioderna på kretskortet att "rinna". Exemplet gjort med avbrottsvektor.


#include <plib.h>

// Antal klockcykler mellan varje avbrott
#define CORE_TIMER_PERIOD 2000000

// Håll koll på vilken LED som lyser för tillfället
int cnt=5;

int main(void)
{
	// Initiera LED på kretskortet
	mPORTDSetPinsDigitalOut(BIT_0);
	mPORTDClearBits(BIT_0);
	mPORTDSetPinsDigitalOut(BIT_1);
	mPORTDClearBits(BIT_1);
	mPORTDSetPinsDigitalOut(BIT_2);
	mPORTDClearBits(BIT_2);

	// Sätt upp avbrottsvektor
	OpenCoreTimer(CORE_TIMER_PERIOD);
	mConfigIntCoreTimer((CT_INT_ON |CT_INT_PRIOR_2|CT_INT_SUB_PRIOR_0));
	INTEnableSystemMultiVectoredInt();
   	return 0;
}

void __ISR(_CORE_TIMER_VECTOR, ipl2) CoreTimerHandler(void)
{
	cnt++;
	cnt%=3;
	mCTClearIntFlag(); // nolla avbrottsflagga
	switch(cnt)
	{
		case 0:mPORTDToggleBits(BIT_2); break;
		case 1:mPORTDToggleBits(BIT_0); break;
		case 2:mPORTDToggleBits(BIT_1); break;
	}
	UpdateCoreTimer(CORE_TIMER_PERIOD); 
}



"Pic32 on a DIP"
Mr Ohmit, som äger sajten eflightworks, har konstruerat detta kretskort som i alltpic32 väsentligt gör PIC32-kretsen praktiskt åtkomlig. Mr Ohmit har gjort flera olika utvecklingssystem för Pic24 och Pic32. Han har arbetat med Pic-produkter i över 10 år. Han är också en Microchip Design Partner. För 35 dollar (under 300 kr) plus 10 dollar i frakt skickar han en "Pic32 on a DIP".

Programmering
Kretsen har en USB-bootloader i sig vilket gör den enkelt programmerbar genom att man pluggar in USB-kabeln i den och startar upp MPLAB.

USB 32-bit Whacker (UBW32)
Brian Schmalz har designat detta break-out kretskort för Pic32'an vilket är det som jag tittat närmare på för detta projekt. Efter lite forskade och exprimenterande med denna krets har jag skrivit en liten beskrivning hur man kommer igång med UBW32 och hur UBW32 är designad. ubw32 pic32
Programmering
Kretsen har en USB-bootloader i sig och du använder ett speciellt program på PC-sidan för att tanka över koden. Läs mer om hur du programmerar UBW32.

Chipkit 32
Chipkit32 är microchips bidrag till den allt mer populära Arduino-plattformen. Det har funnits lite kritik att microchips inte bidragit tillräckligt med drivrutiner till kortet men detta verkar ha lossnat nu. chipkit pic32

Pinguino
Pinguion är ytterligare ett arduino -kompatibelt kort med Pic32'an. Spontant verkade det rätt så väldokumenterat och som alla andra arduinokort är det ganska billigt, drygt 200 kr. Jag köpte ett sådant och skall leka med det längre fram. När jag plöjde lite djupare i "dokumenteringen" verkade det dock inte helt lätt komma upp på spåren med detta kort, så jag har lagt det åt sidan tills vidare.

chipkit pic32





Robot och elektronik -sidan byter namn till electro.st

Senast läst 21:47:24 21/11 2014 Texten uppdaterad 17/9 2014
footer sign