Máquinas de Felix

mayo 14, 2009 en 10:22 pm | Publicado en Electrónica | Deja un comentario

Encontré este video realmente interesante en YouTube que fue grabado por Tom Swindell. Felix Thirn creó la asombrosa obra de arte mecánica que aparece en el vídeo. Otros créditos para el Director Tom Mansfield, y Editor Chris Barnet. Gran trabajo!

Más acerca de Felix’s Machines.

el arte,y la música de Tokio basado dj Daito Manabe.

mayo 14, 2009 en 10:16 pm | Publicado en Electrónica | Deja un comentario

He aquí un nuevo giro en el arte, la electricidad, la biología y la música de Tokio basado dj Daito Manabe. Su sitio está en Inglés y Japonés, lo que ayuda un montón.
Redefinición de los medios de comunicación y tecnologías existentes desde ángulos únicos, he estado activo en los diversos campos, tales como arte, diseño, e incluso la investigación y el desarrollo. Produje la salida de sonidos, imagenes, y luces a través del analizis y transformación de valores numéricos obtenidos de muchos sensores y dispositivos de entrada.
Esta parece ser una actualización de Laurie Anderson de la tapa del álbum en vivo para Estados Unidos, que incluye un cómo-hacer para creadores de música divertida en las notas. Estados Unidos era valoso preparando el tocadioscos para una escuchada más.
Echa un vistazo a la introducción a la aparición de Daito Manabe’s en Dorkbot NY y el baile de tubo de Phillip – experimento de sensor de tensión+ LED.
Gracias Zach
Post original en inglés @ Make

Decodificador 4 bits a hexadecimal display 7 segmentos

mayo 14, 2009 en 10:15 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

;Programa que muestra un numero de 4 bits en
;un display en hexadecimal

.include “m16def.inc”

.def rat = r16

.org 0×00

;Definimos entradas y Salidas

ldi rat,0×00
out ddra,rat
ldi rat,0×7f
out ddrb,rat

;Inicio

main:

ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
in rat,pina
andi rat,0×0f
add zl,rat
clr rat
adc zh,rat
lpm rat,z
out portb,rat
rjmp main

tabla:; display anodo común
.dw 0×7940;1,0
.dw 0×3024;3,2
.dw 0×1219;5,4
.dw 0×7802;7,6
.dw 0×1000;9,8
.dw 0×0308;b,a
.dw 0×2146;d,c
.dw 0×0e06;f,e

Suma o Resta de 2 numeros de 8 bits el resultado se muestra en 2 displays en hexadecimal

mayo 14, 2009 en 10:15 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

;Programa Suma o Resta 2 números de bits
; y el resultado sera mostrado en hexadecimal en 2 displays

.include “m16def.inc”

.def aux1 = r16
.def aux2 = r17
.def rat = r18

.org 0×00

;Definimos entradas y Salidas

ldi aux1,0×00
out ddra,aux1
out ddrb,aux1
ldi aux1,0×7f
out ddrd,aux1
ldi aux1,0xff
out ddrc,aux1

;Inicio

main:

in aux1,pina
in aux2,pinb
sbic pind,7 ;Suma 1,Resta 0
rjmp suma

resta:

sub aux1,aux2
brbs 2,comp
ldi rat,0×00
rjmp mostrar

comp:
neg aux1
ldi rat,0×80
rjmp mostrar

suma:

add aux1,aux2

mostrar: ;Para mostrar en Hexadecimal en 2 Displays

mov aux2,aux1
cbr aux1,0xf0
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,aux1
clr aux1
adc zh,aux1
lpm aux1,z
sbrc rat,7
ori aux1,0×80
out portc,aux1
swap aux2
cbr aux2,0xf0
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,aux2
clr aux2
adc zh,aux2
lpm aux2,z
out portd,aux2
rjmp main;

tabla:; display anodo común
.dw 0×7940;1,0
.dw 0×3024;3,2
.dw 0×1219;5,4
.dw 0×7802;7,6
.dw 0×1000;9,8
.dw 0×0308;b,a
.dw 0×2146;d,c
.dw 0×0e06;f,e

Divisor de frecuencia a 50Hz

mayo 14, 2009 en 10:14 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

;El ck interno esta trabajando a 4Mhz

.include “m16def.inc”

.def aux1= r17
.def aux = r16
.equ cont1=0×60
.equ cont2=0×62
.equ cont3=0×63

.org 0×00
ldi aux,low(ramend)
out spl,aux
ldi aux,high(ramend)
out sph,aux
ldi aux1,0xff
out ddrb,aux1
;config pueto b

clr aux1
main:

out portb,aux1
inc aux1
call retardo
out portb,aux1
dec aux1
call retardo
rjmp main
; iniciando el stack pointer
retardo:
ldi aux,10
sts cont1,aux
carga_cont2:
ldi aux,24
sts cont2,aux

lds aux,cont1
dec aux
sts cont1,aux
brne paso1
rjmp final

paso1:
ldi aux,26
sts cont3,aux

lds aux,cont2
dec aux
sts cont2,aux
brne paso2
rjmp carga_cont2

paso2:
lds aux,cont3
dec aux
sts cont3,aux
brne paso2
rjmp paso1

final:

ret

Contador modulo 256 con retardo

mayo 14, 2009 en 10:14 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

.include “m16def.inc”

.def aux1= r17
.def aux = r16
.equ cont1=0×60
.equ cont2=0×62
.equ cont3=0×63

.org 0×00
ldi aux,low(ramend)
out spl,aux
ldi aux,high(ramend)
out sph,aux
ldi aux1,0xff
out ddrb,aux1
;config pueto b

clr aux1
main:

out portb,aux1
inc aux1
call retardo
cpi aux1,255
brlo main
; iniciando el stack pointer
retardo:
ldi aux,25
sts cont1,aux
carga_cont2:
ldi aux,47
sts cont2,aux

lds aux,cont1
dec aux
sts cont1,aux
brne paso1
rjmp final

paso1:
ldi aux,255
sts cont3,aux

lds aux,cont2
dec aux
sts cont2,aux
brne paso2
rjmp carga_cont2

paso2:
lds aux,cont3
dec aux
sts cont3,aux
brne paso2
rjmp paso1

final:

ret

Division de 2 números binarios

mayo 14, 2009 en 10:13 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

;En el display se muestra segun la entrada de 2 dip switch el cuociente o el residuo y con el otro las (decenas|unidades) o (cero|centenas)

.include “m16def.inc”

.def rsd =r16 ;residuo
.def dvdnd =r17 ;dividend
.def dvsr =r18 ;divisor
.def cont =r19 ;contador
.def aux =r20
.def bcd1 =r21 ;auxiliar

.org 0×00
ldi dvdnd,0×00
out ddra,dvdnd
out ddrc,dvdnd
ldi dvdnd,0×7f
out ddrb,dvdnd;decenas,centenas
out ddrd,dvdnd;cuociente,residuo
inicio:
in dvdnd,pina
in dvsr,pinc
sub rsd,rsd
ldi cont,9
lazo1:
rol dvdnd
dec cont
brne lazo2
rjmp resultado
lazo2:
rol rsd
sub rsd,dvsr
brcc lazo3
add rsd,dvsr
clc
rjmp lazo1
lazo3:
sec
rjmp lazo1

resultado:

sbic pinb,7
rjmp resultado_residuo
sub bcd1,bcd1
ldi cont,8
clr dvsr
clr bcd1

inicio1:

clc
rol dvdnd
rol dvsr
rol bcd1
dec cont
breq mostrar_decena
mov aux,dvsr
andi aux,0×0f
cpi aux,5
brsh sumar
dos:
mov aux,dvsr
swap aux
andi aux,0×0f
cpi aux,5
brsh sumar2
rjmp inicio1

sumar:
subi dvsr,-0×03
rjmp dos
sumar2:
subi dvsr,-0×30
rjmp inicio1

resultado_residuo:
sub bcd1,bcd1
ldi cont,8
clr dvsr
clr bcd1

inicio2:

clc
rol rsd
rol dvsr
rol bcd1
dec cont
breq mostrar_decena
mov aux,dvsr
andi aux,0×0f
cpi aux,5
brsh sumarr
dosr:
mov aux,dvsr
swap aux
andi aux,0×0f
cpi aux,5
brsh sumar2r
rjmp inicio2

sumarr:
subi dvsr,-0×03
rjmp dosr
sumar2r:
subi dvsr,-0×30
rjmp inicio2

mostrar_decena: ;Para mostrar en decimal en 2 Displays

sbic pind,7
rjmp mostrar_centena
mov aux,dvsr
cbr dvsr,0xf0
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,dvsr
clr dvsr
adc zh,dvsr
lpm dvsr,z
out portb,dvsr
swap aux
cbr aux,0xf0
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,aux
clr aux
adc zh,aux
lpm aux,z
out portd,aux
rjmp inicio
mostrar_centena:
clr aux
cbr bcd1,0xf0
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,bcd1
clr bcd1
adc zh,bcd1
lpm dvsr,z
out portb,dvsr
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,aux
adc zh,aux
lpm aux,z
out portd,aux
rjmp inicio
tabla:; display anodo común
.dw 0×7940;1,0
.dw 0×3024;3,2
.dw 0×1219;5,4
.dw 0×7802;7,6
.dw 0×1000;9,8

Contador modulo 10 muestra su resultado en un display 7 segmentos

mayo 14, 2009 en 10:12 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

;Ademas tiene un retardo de 500ms entre cada número

.include “m16def.inc”

.def aux1= r17
.def aux = r16
.equ cont1=0×60
.equ cont2=0×62
.equ cont3=0×63

.org 0×00
ldi aux,low(ramend)
out spl,aux
ldi aux,high(ramend)
out sph,aux
ldi aux1,0xff
out ddrb,aux1
ldi aux1,0×01
out ddrd,aux1
;config pueto b
inicio:

clr aux1
clr aux

main:

ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
add zl,aux1
clr aux
adc zh,aux
lpm aux,z
out portb,aux
out portd,aux1
inc aux1
call retardo
cpi aux1,10
brlo main
rjmp inicio
; iniciando el stack pointer
retardo:
ldi aux,25
sts cont1,aux
carga_cont2:
ldi aux,47
sts cont2,aux

lds aux,cont1
dec aux
sts cont1,aux
brne paso1
rjmp final

paso1:
ldi aux,255
sts cont3,aux

lds aux,cont2
dec aux
sts cont2,aux
brne paso2
rjmp carga_cont2

paso2:
lds aux,cont3
dec aux
sts cont3,aux
brne paso2
rjmp paso1

final:

ret

tabla:; display anodo común
.dw 0×7940;1,0
.dw 0×3024;3,2
.dw 0×1219;5,4
.dw 0×7802;7,6
.dw 0×1000;9,8

Encuentra un valor ingresado por el puerto en una tabla de la Flash

mayo 14, 2009 en 10:11 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

;Sale en un display de 7 segmentos una S si el valor existe en al tabla

;y una n si este no existe

.include “m16def.inc”
.def tempo=r16
.def cont=r17
.def valor=r18
.org 0×0

ldi tempo,0×00
out ddra,tempo
out ddrc,tempo
out ddrd,tempo
ldi tempo,0xff
out porta,tempo;Para poder utilizar simplemente conectando a tierra un cero logico
out portc,tempo
out portb,tempo
in tempo,sfior
andi tempo,0xfb
out sfior,tempo
ldi tempo,0×7f
out ddrb,tempo
sbi portb,7
otro:
ldi zl,low(tabla*2)
ldi zh,high(tabla*2)
ldi cont,12
in valor,pina
lazo:
lpm tempo,z+
cp tempo,valor
breq igual
noyet:
dec cont
brne lazo
notfound:
ldi tempo,0×54
out portb,tempo
rjmp otro
igual:
ldi tempo,0×6d
out portb,tempo
rjmp otro
tabla:
.db 2,4,6,8,10,12
.db 13,15,18,19,0,10

Pasar tabla de la flash a la RAM

mayo 14, 2009 en 10:10 pm | Publicado en ATMega y AVR, Electrónica, Microcontroladores | Deja un comentario

.include “m16def.inc”
.def cont=r16
.def tempo=r17
.def maximo=r18
.def aux=r19
.equ destino=0×60
.org 0×0
ldi tempo,0xff
out ddrb,tempo
out porta,tempo
in tempo,sfior
andi tempo,0xfb
out sfior,tempo
ldi zh,high(tabla*2)
ldi zl,low(tabla*2)
ldi xl,low(destino)
ldi xh,high(destino)
main:
lpm cont,z+;El primer valor de la tabla contiene el número de elmentos
st x+,cont
mov aux,cont
lazo:
lpm tempo,z+
st x+,tempo
dec cont
brne lazo
mov cont,aux
mov maximo,tempo
movw yl,xl
lazo1:
ld tempo,-y
cp maximo,tempo
brsh nada
mov maximo,tempo
dec cont
brne lazo1
nada:
dec cont
brne lazo1
st x,maximo
final:
rjmp final
tabla:
.db 5,15,25,36,54,9

Binario de 8 bits a BCD

mayo 14, 2009 en 9:58 pm | Publicado en Electrónica, Microcontroladores | Deja un comentario

.include “m16def.inc”

.def bin= r16;binario
.def bcd= r17;bcd
.def bcd1= r18
.def cont= r19
.def aux= r20

.org 0×00

inicio:

ldi bin,0xae ;0xae es el número en binario se puede ingresar cualquier valor desde un puerto
sub bcd1,bcd1
ldi cont,8
clr bcd
clr bcd1
inicio1:
clc
rol bin
rol bcd
rol bcd1
dec cont
breq inicio
mov aux,bcd
andi aux,0×0f
cpi aux,5
brsh sumar
dos:
mov aux,bcd
swap aux
andi aux,0×0f
cpi aux,5
brsh sumar2
tres:
cpi bcd1,5
brsh sumar3
rjmp inicio1

sumar:
subi bcd,-0×03
rjmp dos
sumar2:
subi bcd,-0×30
rjmp tres
sumar3:
subi bcd1,-0×03
rjmp inicio1

PUENTE H

mayo 14, 2009 en 9:51 pm | Publicado en Electrónica, Electricidad | Deja un comentario

Un Puente H es un circuito que permite a un motor eléctrico DC girar en ambos sentidos. Son ampliamente usados en robótica y como convertidores de potencia. Los puentes H están disponibles como circuitos integrados, pero también pueden construirse a partir de componentes discretos.

1
2

CONTROL DE PWM DE MOTOR DC CON 555

mayo 14, 2009 en 9:50 pm | Publicado en Electrónica | Deja un comentario

La modulación por ancho de pulsos (o PWM, de pulse-width modulation) de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (por ejemplo sinusoidal o cuadrada) ya sea para transmitir información a través de un canal de comunicaciones o control de la cantidad de energía que se envía a una carga.

Un dispositivo PWM genera una señal cuadrada con un ancho de pulso variable. El ancho de los pulsos del diseño varía de 5% al 95%. Con una resistencia variable, la intensidad de la luz es controlada de acuerdo al ancho del pulso. En un control de motores, la potencia del motor depende del ancho desde 5% (baja potencia/velocidad) a 95% (alta potencia/velocidad).

Aquí varios diseños del controlador PWM con 555:

1
2
3

AVR – CONTROL DE SERVO MOTOR

mayo 14, 2009 en 9:48 pm | Publicado en Electrónica, Microcontroladores | Deja un comentario

CONTROL DE SERVO

Aquí se presenta un programa que controla el giro de un motor servo HS-311. El microcontrolador es un ATmega 16.

‘Control de un motor servo HS-311.

‘Ensayo 1

‘Por: Diego Orlando Barragán Guerrero

‘diegokillemall@yahoo.com

$regfile = “M16def.dat” ‘Definir tipo de micro

$crystal = 4000000 ‘Frecuencia de 4 MHz

Dim M As Word ‘Ancho de pulso

Config Portb = Output ‘Puerto B como salida

Portb = 0 ‘Puerto B a 0

Inicio:

For M = 500 To 2500 Step 25

Pulseout Portb , 1 , M ‘PULSEOUT crea el pulso para control del motor

Waitms 20 ‘Frecuencia de envío del pulso

Next

For M = 2500 To 500 Step -25

Pulseout Portb , 1 , M ‘PULSEOUT crea el pulso para control del motor

Waitms 20 ‘Frecuencia de envío del pulso

Next

Goto Inicio

End

A continuación se muestra la simulación del programa:

avr1

PIS BASIC PRO SOBRE MPLAB

mayo 14, 2009 en 9:46 pm | Publicado en Electrónica, Microcontroladores | Deja un comentario

PIC BASIC PRO es uno de los compiladores más sencillos de usar, y por esa razón uno de los más populares. Gracias a la versión 8 de MPLAB de Microchip, es posible subir este compilador a uno de los entornos más completos para simulación de código para microcontroladores. Aquí te presentamos la manera cómo hacerlo. Es fácil, sencillo y sobre todo muy útil.

1. Instalar la carpeta del compilador Pic Basic Pro en C:\PBP247.

2. Descargar los siguientes plugins.

3. Extraer los plugins en la carpeta C:\PBP257 y luego ejecutar “PBregister.bat” (INICIO – EJECUTAR – C:\PBP245\PBregister.bat).

bat

4. Ir al ícono Mi PC, click derecho, Opciones avanzadas, Variables de entorno y en Variables del sistema en el Path añadir la siguiente línea:

C:\PBP245;C:\Archivos de programa\Microchip\MPASM Suite

sistema

5. Resetear el PC.

6. Luego, iniciar MPLAB y seleccionar Project -> Set Language Tool Locations. Configurar como se muestra en la siguiente figura añadiendo en el campo location C:\PBP247\PBPW.EXE:

sel

7. Y listo, ya puedes usar PBP sobre MPLAB.

entorno

« Página anteriorPágina siguiente »


Entries y comentarios feeds.