Postagens

Mostrando postagens com o rótulo ATMEGA

Cubo do Mario Bros acionado remotamente pelo SNES

Imagem
Tempos atrás peguei esse projeto , imprimi em escala maior, coloquei uma bateria lítio 18650, uma fita led, um buck boost para subir a tensão da bateria para os 12V da fita led e um carregador USB para carregar ela. Porém ficar ligando ele na chave ficou sem graça e decidi evoluir a criatividade acionando ele remotamente ao ligar o SNES. A base do projeto ficou com uso de um TX/RX RF de baixíssimo custo conhecido como FS1000A, facilmente encontrado no ML ou Aliexpress. Ver essa foto no Instagram Um post compartilhado por naldin (@naldin)     A bagunça do lado do RX (cubo) O circuito TX dentro do SNES Primeiros testes Mas para o conjunto FS1000A funcionar ainda era preciso um micro controlador, eu optei por usar um ATtiny 85 em cada ponta, programando o ATtiny 85 pela IDE Arduino com biblioteca damellis e para a codificação do FS100A usei a biblioteca VirtualWire . O ATiny 85 deixei a frequência como vem de fábrica em 8Mhz, importante selecionar ...

Programando AVR na IDE e placa Arduino - ADC

Imagem
Nas postagens anteriores mostrei como configurar portas , como os Timers trabalham gerando pulsos e PWM . Neste agora vou mostrar como o ADC (Analog to Digital Converter) trabalha e colocar ele para funcionar em conjunto com um PWM. Pegando um sinal analógico em um porta e controlando o brilho de um LED. Se você chegou aqui direto, é aconselhável ler o  post sobre portas  e sobre PWM primeiro, para entender como fazer o controle de registradores e como o PWM trabalha.

Programando AVR na IDE e placa Arduino - PWM

Imagem
Nas duas primeiras postagens sobre AVR mostrei configurações de portas e timer trabalhando no modo CTC , nesta postagem mostrarei o timer trabalhando como PWM (Pulse-width modulation). O PWM é amplamente usado em micro controladores para controle de motores, lampadas, temperatura e inúmeros dispositivos. Se você chegou aqui direto, é aconselhável ler o  post sobre portas  primeiro e depois o post sobre timers , para entender como fazer o controle de registradores e como timers trabalham.

Programando AVR na IDE e placa Arduino - Timers

Imagem
  Na primeira postagem sobre programação AVR mostrei como os registradores trabalham e como setar portas. Nesta postagem irei mostrar como os Timers trabalham, Timers são o coração dos micro controladores, com eles é possível ter controle de tempo e controlar portas PWM  o que gera uma imensa flexibilidade de trabalho Se você chegou aqui direto, é aconselhável ler o post sobre portas primeiro para entender como fazer o controle de registradores.

Programando AVR na IDE e placa Arduino - Portas

Imagem
  A maioria dos Arduinos, principalmente os primeiros lançamentos usam um micro controlador da linha ATMega em suas placas. O que a Arduino fez foi deixar a placa com pinos de fácil acesso, criar um bootloader onde é possível carregar o firmware de forma fácil via USB-Serial e criar uma interface IDE com bibliotecas de fácil entendimento. Mas lá no fundo de todo processo o que está rodando são programações AVR. Na programação AVR fora do Arduino,  o processo de carga de firmware é feito via serial SPI . Vou mostrar aqui em três, quatro ou até mais postagens do básico de uma programação em AVR, será  aquele norte para qualquer um que queira se aventurar e depois poder aprofundar sozinho, porém usando uma placa e IDE Arduino para ficar um pouco mais fácil.

Instalando o firmware Klipper na impressora 3D - parte 2

Imagem
Na primeira parte mostrei como fazer a instalação do Klipper em conjunto com o Mainsail, após instalado ainda é necessário configurar fim de curso, passos por unidades (steps per unit), direção dos eixos, etc. O Mainsail ajuda muito nessas configurações por ele trabalhar com interface gráfica, ao contrário do Klipper que roda apenas em modo texto (terminal via ssh). As configurações são bem parecidas do que é feito no Marlin como foi mostrado nessa já antiga postagem , porém um pouco mais fácil. Para quem já tinha a impressora configurada antes pelo Marlin e salvou a configuração com o comando M503 não terá muita dificuldade.

Instalando o firmware Klipper na impressora 3D

Imagem
  Klipper é um firmware para impressora 3D desenvolvido para praticamente qualquer dispositivo que rode Linux, normalmente tem sido muito usado com Raspberry Pi devido ao pequeno tamanho da placa, baixo custo e acesso fácil (lá fora). Mas pode ser usado até mesmo um PC mais antigo, ou pelo que vi placas como Orange Pi. O Klipper inicialmente foi desenvolvido para trabalhar junto com o OctoPrint , que é um software que roda um Web Server e amplia muito as opções de uso para impressoras que trabalham com base no Arduino rodando o conhecido firmware Marlin .

Expandindo portas do Arduino com o 74HC595

Imagem
  Algum tempo atrás fiz uns testes em um 74HC595 em conjunto com um microcontrolador ATmega 328. Utilizando a mesma lógica que foi baseada neste tutorial, refiz o processo utilizando um Arduino. O 74HC595 pode ser utilizado para expandir as portas digitais do Arduino, ele recebe um byte (8bits) serial e escreve em 8 saídas paralela. Para fazer isto ele utiliza apenas 3 portas do Arduino, não importando a quantidade de portas que se deseja na saída. É possível colocar na saída quantas portas desejar, cascateando um CI em outro.

Embreagem para volante DFGT com Arduino

Imagem
Já faz algum tempo que possuo um volante Logitech Driving Force GT, apesar de ser um volante antigo, ele me diverte nas poucas horas vagas que tenho para usa-lo. Por usar pouco, não tenho interesse em adquirir outro mais moderno por enquanto. Por causa disso me animei a fazer um pedal de embreagem para ele depois de ver este projeto . O projeto é bem interessante, porém usa um botão para o acionamento da embreagem, controlado por um PIC. Os jogos que mais rodo no PC, são o Assetto Corsa e o Project Cars, pelo projeto vi o Project Cars não iria funcionar, já que o pedal de embreagem cria um segundo joystick além do volante e o pCars reconhece somente um, já o AC reconhece dois, porém a embreagem precisa ser acionada por um joystick e não por um botão.

Cockpit de Movimento com Arduino - Parte 3

Imagem
Continuando o projeto do cockpit de movimento, para fazer a movimentação como disse na parte 2 , pretendo usar motores de limpador de para brisa de carro. Para isso preciso de uma forma de saber a posição que o motor está a todo momento, exatamente como um servo trabalha. A forma que pretendo usar é colocando no eixo do motor um potenciômetro, inclusive servos trabalham exatamente assim, com um potenciômetro no eixo principal de movimento. Com o potenciômetro no eixo é preciso um comparador que fica o tempo todo comparando o valor desejado (valor de entrada) com o valor que está no potenciômetro, assim ele gira o motor para o lado certo até o valor ser igual ao valor desejado.

Ligando um volante Logitech G25, G27 ou Force GT no PS4

Imagem
http://www.isrtv.com/logitech/logitech-g27-support-playstation-4 Quando estava para comprar um Playstation 4, descobri que ele não aceitava meu volante Driving Force GT, aliás ele não aceitava nenhum volante Logitech antigo, nem mesmo o G27 que ainda era um volante novo. A solução até então era comprar o novíssimo G29. Procurando informações do “porque”, não achei nada conclusivo, a Sony informa que é problema com a Logitech e a Logitech informa que o problema é com a Sony. Então encontrei o Maxrace , um produto muito interessante, que consegue plugar os volantes G29 / G27 / GT / GT Pro / G920 / MOMO nos consoles PS4 / XBOX ONE / XBOX 360, porém com o preço em torno de 150 dólares, o que achei bem caro. Procurando um pouco mais, encontrei uma solução bem interessante, apesar de não ser tão pratica que é o GIMX . Com valor quase irrisório, já que usa como hardware adicional apenas um Arduino (U$5) e um Serial USB (U$3).

Cockpit de Movimento com Arduino - Parte 2

Imagem
Na primeira parte, mostrei aqui o inicio do projeto. Fiz varias mudanças no código onde adicionei: Agora é possível adicionar a porta que o Arduino vai usar no inicio do programa. O programa pode ser aberto antes de abrir o jogo, ele irá esperar pelo jogo. Quando um lado sobe o outro abaixa um pouco, melhorando a simulação. Durante a frenagem ocorre a rolagem para frente da carroceria. Foram adicionados medidores de km/h e rpm.

Cockpit de Movimento com Arduino - Parte 1

Imagem
Gosto muito de jogos simuladores de corrida. Um tempo atrás meu cunhado comentou comigo sobre esses cockpits que movimentam em curvas e também sobre velocímetros reais que acompanham o jogo, mas até então não fazia ideia de como eles funcionavam. A pouco tempo ele me enviou um vídeo sobre um e decidi estudar um pouco, descobri que boa parte dos jogos possui APIs que entregam dados dos jogo, então falei com ele que se ele interessasse em fazer a mecânica eu faria a eletrônica e programação.

Caneca Mistura Tudo Automatica

Imagem
Pouco tempo atrás ganhei uma caneca mistura tudo, ela possui um motor com uma pequena hélice no fundo, acionado com um botão no cabo. Funciona bem, mas ficar apertando o botão toda hora para misturar o chocolate quente, estava ficando tedioso. Foi então que pensei em usar um micro controlador para comandar o motor automaticamente. Usando um pequeno ATtiny13 SMD que estava parado aqui, um transistor, resistor, led e capacitores de placas usadas que tenho para retirar componentes, fiz um sistema automático. O funcionamento segue abaixo nas instruções de uso. O ATtiny usado é um 13A, este A é importante porque sua tensão de trabalho é de 1,8 a 5,5V, como a caneca usa duas pilhas AAA, o ATtiny sem o final A funciona de 2,7V a 5,5V e com a queda de tensão das pilhas pode-se ter problemas. No modo power down, o ATtiny13 consome apenas 0,5uA de corrente, o que garantirá a vida das pilhas AAA por vários anos, caso a caneca fique desligada (Power Down Mode) não sendo usada.

ATmega, Serial e 74HC595 - parte 3

Imagem
Poucos dias atrás postei aqui e aqui duas formas de comunicar um ATmega com uma serial e um HC595. Hoje mostro aqui mais uma forma, utilizando o recurso da SPI do ATmega. A SPI trabalha com shift register, da mesma forma que o HC595, portanto trabalhando no AVR apenas enviando os dados e não recebendo resposta alguma, é possível enviar esses dados para o HC595. Os dados irão pela MOSI da SPI junto com o clock que já é gerado automático, sendo necessário apenas fazer na mão o latch ao fim do envio de dados para o HC595. Abaixo segue o código e as novas conexões, onde foi alterado no lado do AVR para o HC595, dados, clock e latch.

Farol Estroboscópio para o carrinho RC com Arduino e ATMega

Imagem
Poucos dias atrás postei aqui um circuito com 555 de um farol estrobo. Decidi fazer o mesmo para Arduino e AVR. Usando os mesmos tempos do 555, deixo aqui os códigos Arduino, ATMega328p e ATTiny 85 que acho que seria uma boa opção pelo seu tamanho reduzido.

ATmega, Serial e 74HC595 - parte 2

Imagem
Na postagem anterior mostrei a primeira forma do programa, nesta aqui no lugar dos delays (_delay_ms), usei o timer para gerar o clock para o HC595 e tratar os pulsos do byte e o latch. O ATMega382p possui três timers, dois de 8 bits e um de 16 bits, usei o de 16 bits apenas para manter as mesmas portas do programa anterior, já que usei o modo CTC (Clear Timer on Compare Match) para o clock e no timer de 16 bits ele usa a porta PB1 (OC1A) no pino 15 do CI. O OCR1A é o registrador onde é setado o valor que irá definir a frequência dos pulsos de saída gerado na porta PB1 (OC1A), para o timer de 16 bits este valor vai de 0 a 65535, para o de 8 bits logicamente de 0 a 255.

ATmega, Serial e 74HC595 - parte 1

Imagem
Já faz algum tempo que venho estudando sobre programação de AVRs, logo após mexer com Arduino despertei interesse em AVR. Tenho utilizado o micro controlador ATmega388p para meus teste, o mesmo que o Arduino usa. Minha melhor referencia foi o livro Make: AVR Programming do Elliot Williams, um livro que recomendo para todos que como eu não sabia nada de AVR. Um assunto interessante nesse livro é o tratamento da serial (USART) do ATmega, o autor criou uma biblioteca muito bacana e útil, e como ele próprio diz no livro, podemos usá-la sem restrições.

Montando uma impressora 3D (Prusa Mendel i2) por R$1000,00 - Parte 3

Imagem
Após todos os contratempos da montagem, cheguei na parte final, que são os ajustes de software e ajustes finos de hardware. A documentação encontrada aqui , é muito boa, mas peca em não detalhar como ajustar medidas dos eixos X, Y e Z, ou seja, setar por exemplo para o eixo Y movimentar 10mm corretamente. Detalharei isto mais abaixo. A primeira observação a ser feita é deixar o eixo Z na mesma altura dos dois lados, para isto encontre de um lado uma base fixa e meça até a base móvel, com a mão movimente o outro lado do eixo de rosca até que dos dois lados fique com a mesma medida. Depois é necessário ajustar os switchs de fim de curso (home), verificando inicialmente se os motores estão movimentando para o lado certo pelo Pronterface . Apenas o eixo Y não é visualmente movimentando conforme as setas no Pronterface, movimentando no Pronterface para cima, a mesa deverá ir para a frente da impressora, ou seja para o lado onde fica o motor do eixo Y. Caso algum motor esteja invertido,...

Montando uma impressora 3D (Prusa Mendel i2) por R$1000,00 - Parte 2

Imagem
Para a montagem a primeira dificuldade foi em encontrar um bom manual de montagem. Na pagina da Reprap tem um manual para baixar em .pdf muito bom, porém ele é para a primeira versão da Prusa Mendel e possui algumas diferenças para a Prusa Mendel i2. Eu encontrei uma playlist do Youtube muito boa, bem explicativo detalhes por detalhes e na pagina da Reprappro também tem boas instruções de montagem, juntando tudo foi possivel fazer a montagem com poucas dificuldades. Os links são: Manual pdf Prusa Mendel : http://reprap.org/wiki/Prusa_Mendel_Build_Manual Playlist do Youtube: http://www.youtube.com/playlist?list=PLBuiTTpnAMwf2boK_06yDtAdN_Fk707zF Manual Reprapro: https://reprappro.com/documentation/mendel-tricolour/frame-assembly