27 de nov de 2011

Controle de Fader Behringer

Olá galera! após algumas provas da faculdade me sobrou um tempinho e aqui estou para mostrar para vocês mais um projeto utilizando a placa PK2Lab.

Antes de continuar, temos que nos familiarizar com o termo técnico "fader" que é a forma que os operadores de áudio usam ao se referirem ao potenciômetro deslizante, estes faders podem ser motorizados ou não, e são um dos ajustes mais recorridos nas mesas de audio e iluminação.


Fader motorizado Behringer




No mundo do áudio profissional, é comum nos depararmos com mesas de som digitais, onde todo o processamento de som é feito em poderosos DSP's e o posicionamento dos faders se faz com o uso de motores CC e correias, com isto podemos ter em 16 faders o controle de 64, cada conjunto de 16 faders em uma página de controle, ao se alterar entre páginas, os eixos dos faders também se alteram, conforme a memória da página que estiver selecionada.

 

Como eu estava com um destes faders em mãos, resolvi brincar um pouco e desenvolvi um pequeno código para demonstrar o funcionamento do mesmo, o código é muito simples e consiste em ler o valor correspondente do fader que está conectado ao PORTA1 e comparar com os dados enviados via USB, então o programa fica o tempo todo mantendo a posição do eixo, ou seja, no caso de alguma força externa mover o cursor, o programa tentará corrigí-lo imediatamente, claro que há outras maneiras muito mais elegântes de efetuar este controle, como por exemplo utilizando um controle PID, porém o foco do post é dar uma idéia de como é que funcionam estas mesas e não este tipo de implementação.
Para efetuar o controle do motor CC conectado ao fader, utilizamos CI driver TA7291S fabricado pela empresa Toshiba que consiste em uma ponte H completa de 1A. Para acionar o motor, precisamos apenas de dois sinais TTL onde temos as funções de girar a esquerda, girar a direita, freiar e liberar o motor.



Este driver possui ainda circuito de proteção térmica e de sobrecorrente, alem de um pino Vref onde é possivel controlar a corrente que flui pela ponte. 
Um pequeno Proto Board foi utilizado para interligar o driver à placa PK2Lab, onde os pinos Vcc(2), Vref(8) e Vs(6) estão conectados a alimentação de 5V, os pinos de controle IN1 e IN2 estão conectados ao PORTD0 e PORTD1. O motor deste fader como característica a tensão de trabalho de 8V, porém anos testes o sistema se comportou muito bem trabalhando a 5V.


 
Para este projeto também criei um pequeno supervisório em C# para que se possa controlar e ter um feedback da posição do eixo do fader, os dados são lidos e escritos diretamente no buffer da USB que está configurado no modo HID (Human Interface Device) que é a mesma categoria em que se encontram teclados e mouses USB. 

 

Um detalhe interessante deste software, é que ele nós dá a informação real da posição do eixo do fader e isto é um recurso poderosíssimo pois desta forma temos certeza de que o comando enviado ao fader foi corretamente interpretado e o ajuste foi executado.


 Abaixo um vídeo demonstrando o funcionamento do projeto. 




Para que vocês possam ter idéia de como são rápidos estes ajustes nas mesas digitais, posto o vídeo de uma mesa de som YAMAHA 01V96 chamado "Dancing Faders" em que os faders aparecem "dançando", claro que não passa de uma brincadeira do tecnico de som, mais nos dá a ideia exata do poder e da precisão deste controle.




Arquivos para download:

 Por hoje é isto, boms projetos!

6 de nov de 2011

PK2Lab e Flowcode 4


Hoje apresento a vocês um software muito interessante desenvolvido pela empresa Matrix Multimedia e que é considerado uma das linguagens de programação mais avançadas para microcontroladores disponível na atualidade, chama-se Flowcode. 


A grande vantagem do Flowcode é que permite aos utilizadores com pouca experiência criar circuitos eletrônicos e sistemas robóticos complexos de forma simples e intuitiva. O Flowcode é uma linguagem de programação poderosa que recorre a macros para facilitar o controle de dispositivos complexos, como displays de 7-segmentos, controladores para motores e displays LCD. A utilização de macros permite ao utilizador controlar dispositivos eletrônicos extremamente complexos de uma maneira mais transparente. 



Além de gerar o código binário para gravação do microcontrolador, esta ferramenta permite a simulação de uma ampla gama de periféricos na própria tela e de forma muito eficiente, mostrando no painel de controle, muitas informações referentes aos componentes adicionados ao projeto, podemos citar como exemplo o componente PWM, que mostra a forma de onda gerada com as informações de período e ciclo ativo (Duty Cycle).

Outra vantagem é que este software é completamente compatível com a placa PK2Lab, não sendo necessário abrir o código em outro aplicativo para efetuar a gravação, apenas execute a compilação que o programa é automaticamente gravado na placa, tudo através de um cabo USB. 

Para demonstrar o funcionamento do software, criei dois tutoriais em vídeo, que mostra a criação de um simples programa que alterna os led's conectados ao PORTD da placa PK2Lab e o processo de configuração da placa PK2Lab junto ao software Flowcode.






Ao instalar o software, é necessário selecionar o programador PicKit2 para que o software reconheça a placa PK2Lab como destino do projeto. O Software possui ainda uma versão gratuita de avaliação que pode ser baixada diretamente do site do desenvolvedor.

Acesse os links abaixo para obter maiores informações.

Manual em Inglês

Página do desenvolvedor

Vídeos de treinamento (Inglês)
 


Bom, espero que tenham gostado, boms projetos! 

******************************************************************************************************************

2 de nov de 2011

Comunicação Serial RS-232


Olá galera, hoje apresento a vocês uma ferramenta essencial para o desenvolvimento de sistemas eletrônicos, principalmente embarcados, que é a comunicação serial RS-232.

Muitas vezes nos deparamos com a necessidade de trocar informações entre um PC e a placa micro controlada e uma maneira simples de se conseguir isto é por meio do uso da porta serial.

A maioria das mensagens digitais são mais longas que alguns poucos bits, portando se faz necessário o uso de alguma técnica para transmitir esta informação. Na comunicação paralela, como o próprio nome diz, transmite-se todos os bits ao mesmo tempo, porém, para isto é utilizado um pino de hardware para cada bit a ser transmitido, isto nos traz velocidade, mas demanda muito hardware. Já na comunicação serial a mensagem é quebrada em partes menores e transmitida sequencialmente, onde cada bit representa uma parte da mensagem. Os bits individuais são então rearranjados no destino para compor a mensagem original.

Exemplo de frame serial (1 Byte)




Taxa de Transferência (Baud Rate)


A taxa de transferência refere-se à velocidade com que os dados são enviados por meio de um canal e é medida em transições elétricas por segundo. Para que o equipamento transmissor consiga transmitir corretamente e o receptor possa entender esta informação recebida, ambos têm de estar em sincronismo, ou seja, ajustados para o mesmo Baud Rate.
Na comunicação serial temos alguns valores comumente usados, sendo eles 300, 1200, 2400, 4800, 9600, 19200 e 56000bps, onde um valor de 9600 corresponde a uma transferência de 9600 dados por segundo, quanto maior for a velocidade, maior deverá ser a estabilidade do oscilador local para garantir a correta comunicação.


Níveis Lógicos


A porta serial utiliza valores de tensões específicos para codificação de dados, onde um valor entre -3V e -25V, são considerados nível lógico “1” e tensões entre +3V e +25V são considerados nível lógico “0”, é por esta razão que muitos conversores USB/RS-232 não funcionam adequadamente quando utilizados com gravadores de microcontrolador, pois estes não conseguem gerar tais tensões.



 
MAX232


Um dos componentes que faz a conversão dos dados do padrão TTL(PIC) para o padrão RS-232(PC) é o CI MAX232, ele inclui um circuito de “charge pump” capaz de gerar tensões de +10V e –10V a partir de uma fonte de alimentação simples de +5V. Este é o CI empregado na placa PK2Lab para comunicação serial.


 
Cabeamento


O cabo utilizado para a comunicação entre a placa PK2Lab e o PC, é conhecido como cabo “null modem”, onde temos apenas 3 fios (TxD, RxD e GND), neste sistema não utilizamos controle de tráfego e temos que conectar o sinal DTR com os sinais DSR e CD nos dois extremos.


Programa do microcontrolador


Para o programa do microcontrolador, foi escrito um código simples que verifica os dados recebidos pela serial, ligando e desligando os leds do PORTD conforme caracter recebido. Caso o caracter recebido não seja de controle, a placa envia ao PC uma string informando a situação. Para isto utilizamos três funções da biblioteca do MikroC, são elas:


Usart_Init(9600)       

Função que inicializa a comunicação via hardware do microcontrolador, nesta função deve-se informar qual velocidade ele irá trabalhar, neste caso 9600bps.


Usart_Data_Ready()

Função que indica recebimento de dados via comunicação serial, caso tenha dados no buffer, retorna 1.


Usart_Write(x)  

Função que envia dados pela porta serial, onde os dados são enviados como parâmetro da função, neste exemplo é enviado o conteúdo da variável x.


Usart_Read()

Função que recebe dados pela porta serial, para que isto ocorra, deve-se atribuir a uma variável de recepção o retorno da função Usart_Read().

 

Terminal Serial C#

Para este projeto, desenvolvi um software em Visual Studio C# 2010 que consiste em um terminal serial completo, onde temos as janelas de recepção e transmissão de dados e a aba de configuração da porta COM, onde é possível selecionar diferentes taxas de comunicação entre outros parâmetros.



Bom, acredito que tenha conseguido passar alguma idéia do que é a comunicação serial, como puderam ver, com o uso das bibliotecas do MikroC, o processo se torna simples e eficiente, por hoje é isto, boms projetos!