El microcontrolador PICAXE-14M

De El raconet d'en Jordi

Dreceres ràpides: navegació, cerca

Aquest xip és una ampliació del PICAXE- 08M. Amb 14 potes, disposem de 5 entrades (banda esquerra) i 6 sortides (banda dreta).

Aquesta disposició facilita el seu ús amb els alumnes, però podem modificar aquesta assignació d'entrades i sortides, especialment si necessitem més entrades analògiques, ja que amb aquesta disposició per defecte només comptem amb dues entrades (ADC0, ADC4) de les cinc possibles.

Imatge:Picaxe031.png

La variable dirsc configura amb els seus bits (1 -> sortida, 0 -> entrada) la funció dels pins C. Per exemple

let dirsc = %00111000

configura C5, C4 i C3 com a sortides i C2, C1, C0 com a entrades (funció inversa de la normal).

Podem donar un valor 1 a la sortida C3 amb l'ordre high portc 3 o llegir l'entrada C0 amb

if portc pin0 = 1 then salta

Per a utilitzar les entrades analògiques ADC1, ADC2, ADC3 primer hem de configurar aquests pins com a entrades.

Quan configurem sortides per defecte com a entrades, és necessari posar en série amb el pin una resistència de 1kΩ, per evitar problemes des de que s'engega el xip fins que s'executa l'ordre de configuració.

Trobareu més informació sobre aquestes configuracions a l'apèndix C del document PICAXE Manual 1 Getting Started



La placa de projectes AXE117

Porta un sòcol per a un PICAXE-14M, a més a més de la interfície de programació i d'un xip de transistors Darlington ULN2003A. La placa AXE117 no ve soldada ni porta el xip PICAXE-14M, però si el xip ULN2003A. L'adició d'aquest xip fa aquesta placa especialment útil per projectes amb control de motors pas a pas unipolars o amb càrregues amb una intensitat per sobre dels 20 mA.

És millor fer una mica més grans els forats de la banda dreta amb una broca de 0,8 mm si volem posar regletes de connexió. Però aquesta placa està pensada més per adaptar-la al nostre projecte i soldar les connexions que ens interessin: el seu baix preu ho permet.


El microcontrolador PICAXE-14M2

A més a més de les característiques millorades dels M2, aquest PICAXE destaca per la seva memòria RAM de 512 bytes, que permet estudis de senyals digitals.

Aquí en teniu un exemple. Hem connectat al PICAXE-14M2 un sensor SIRC (pin C.3) i dos LEDs (verd al pin B.1 i groc al pin B.0). Si enviem un codi infraroig (no cal que sigui de SONY) dues vegades (quan s'apaga el LED verd i quan s'apaga el LED groc) ens envia pel cable de programació la codificació HEX pronto per reproduir aquest missatge infraroig.

  
symbol entrada = C.3
symbol ledv = B.1
symbol ledg = B.0
symbol accw = w1
symbol acch = b3
symbol accl = b2
symbol compte = b4
symbol hexh = b7
symbol hexl = b6
symbol nburst = b24
symbol datan = b25
symbol bptrn = b26
symbol flancs = b27
symbol arrayn = 128
symbol arrayl = 256
symbol arrayh = 384

init:
	setfreq m32
	flancs = 50

main:

mesural:
	bptr = arrayl 	
	high ledv
	wait 50
	low ledv
	for  compte = 1 to flancs
		pulsin entrada, 0, accw
		@bptrinc = acch
		@bptrinc = accl
	next compte

	high ledg
	wait 25
	low ledg
mesurah:
	bptr = arrayh 	
	for  compte = 1 to flancs
		pulsin entrada, 1, accw
		@bptrinc = acch
		@bptrinc = accl
	next compte

analitza:
        datan = 0
        bptrn = arrayn
        bptr = arrayl 	
        do 
            acch = @bptrinc
	    accl = @bptrinc
        loop while accw <> 0
        do while accw = 0
            acch = @bptrinc
	    accl = @bptrinc
        loop 
        do while accw <> 0
            poke bptrn, WORD accw
            inc datan
	    bptrn = bptrn + 4
	    acch = @bptrinc
	    accl = @bptrinc
        loop 
        nburst = datan

        bptrn = arrayn + 2
        bptr = arrayh 	
        do 
            acch = @bptrinc
	    accl = @bptrinc
            loop while accw <> 0
        do while accw = 0
            acch = @bptrinc
	    accl = @bptrinc
            loop 
        do while accw <> 0
            poke bptrn, WORD accw
            inc datan
            bptrn = bptrn + 4
	    acch = @bptrinc
	    accl = @bptrinc
            loop 

        if nburst < 4 then main

        sertxd ("0000 0067 0000 ")
        hexh = nburst / 16
        hexl = nburst // 16
        if hexh > 9 then : hexh = hexh + 7: endif
	if hexl > 9 then : hexl = hexl + 7: endif
	hexh = hexh + 0x30
        hexl = hexl + 0x30
	sertxd ("00",hexh, hexl, " ")
	bptrn = arrayn
	for compte = 1 to datan
	    peek bptrn, WORD accw
            accw = accw + 10 	'redondeig
            accw = accw / 20	' 40 kHz
	    hexh = acch / 16
            hexl = acch // 16
	    if hexh > 9 then : hexh = hexh + 7: endif
	    if hexl > 9 then : hexl = hexl + 7: endif
	    hexh = hexh + 0x30
	    hexl = hexl + 0x30
            sertxd (hexh, hexl)
	    hexh = accl / 16
            hexl = accl // 16
            if hexh > 9 then : hexh = hexh + 7: endif
	    if hexl > 9 then : hexl = hexl + 7: endif
	    hexh = hexh + 0x30
	    hexl = hexl + 0x30
	    sertxd (hexh, hexl, " ")
	    inc bptrn
	    inc bptrn
	next compte

	sertxd ("041f")
	sertxd (13,10)
	goto main



Tornar a l'índex