Incorporar sinais de áudio Realmente depende das freqüências tocadas e da velocidade de seu ADC - se um período de meia onda quadrados é menor do que o tempo de aquisição ADCs, então youll (geralmente, dependendo da arquitetura ADC) obter um valor analógico como youd esperar de um Média do sinal PWM. Se a forma de onda for diferente de uma onda quadrada, você ainda obterá valores analógicos, mas as leituras serão um pouco mais complicadas. Os reprodutores de música adequados têm DACs de vários bits usados para produzir as formas de onda de saída, o que significa que não são simples em e off ondas quadradas como youd obter de um gerador PWM. Se o ciclo de trabalho de várias ondas é o mesmo, ea forma de onda é a mesma, então o ADC obterá a mesma leitura analógica independentemente da freqüência das ondas, desde que a freqüência seja suficientemente alta. Se a freqüência for muito baixa você obterá todos os tipos de leituras estranhas do ADC, devido a conflitos no tempo de transição de onda com o período de amostragem de ADC. Se você quiser dados agradáveis e limpos de seu ADC de áudio-driven você tem duas opções como eu vejo: 1 onda quadrada de áudio, com freqüência máxima não mais de metade da freqüência ADC. Cada leitura ADC irá dar-lhe um on ou off que você pode usar imediatamente. Se você obtiver algo diferente de quase zero e quase máximo, isso significa que a onda mudou durante a leitura, e você pode usá-lo para sinalizar um bit de entrada, ou simplesmente descartar a leitura. 2 Qualquer forma de onda que você gosta (quadrado ainda é bom), mas com freqüência significativamente acima da freqüência ADC. Agora estávamos olhando para algo muito mais próximo do PWM, onde a entrada média irá dar-lhe um valor analógico que corresponde ao ciclo de trabalho da onda sendo lido naquele momento. Em vez de serial binário básico agora você pode codificar potencialmente um valor de byte inteiro de dados em um único tom. Esta vai ser uma opção mais complicada no entanto, e é muito provável que o seu iPod não será capaz de produzir uma freqüência suficientemente alta para ultrapassar o ADC. Por rik Sun, 2010-01-10 05:29 Volume é a configuração mais fácil de manipular no Audacity ou software similar. Eu não tenho nenhuma idéia sobre a confiabilidade de tal modulação embora. Um software diferente pode produzir volumes ADC diferentes no final. E as diferenças de software aparecem em todos os lugares. Mesmo quando se utiliza o mesmo programa (Audacity) sempre. Cada ajuste pouco potencialmente estragar o sinal de saída resultante, volume wise. Serial LCD display de texto - gancho 039em-se de qualquer plataforma de percorrer em curso Introdução Estes monocromática exibe texto em série LCD são aparentemente muito popular e fácil de usar. Mas o manual oficial (pdf) não merece crédito por isso. E isso é bastante incaracterístico (.), Dada a prosa de alta qualidade usual entregue pelo departamento de documentação Sparkfun. Existem muitas exibições de texto diferentes no mercado. Esta caminhada apenas discute o tipo com um controlador HD44780 e uma mochila serial com base em um PIC 16F688 com open source firmware. Estes displays são produzidos pela Sparkfun, mas revendedores, como o Solarbotics. Também tê-los em suas lojas. Eles vêm em algumas variedades. - cinco combinações de cores diferentes - 16 x 2 ou 20 x 4 caracteres - Tensão de alimentação / dados de 5,0 V ou 3,3 V - básica ou serial ativada Esta caminhada apenas discute o tipo habilitado em série. Eu comprei um vermelho 16x2 em preto com uma fonte de 5 V, mas minhas instruções devem se aplicar a qualquer exibição serial habilitado. Ligações eléctricas Ligar à minha mochila não foi muito simples. O encaixe ranhurado em torno do cabeçalho do jumper não cabia qualquer conector que eu tinha na loja. Então eu soldado três pinos mais para as almofadas vazias no canto inferior direito. Eu usei um cabo jumper de segunda mão com três fios para conectar ao meu projeto. Eu fiddled a ordem dos pinos no casaco para coincidir com os pinouts em cada extremidade do cabo. Os três pinos relevantes a reconhecer são: - RX (receber dados) - GND (terra, comum) - VDD (V, tensão de alimentação positiva, 5.0 V ou 3.3 V) Aviso: há um aviso engraçado nas páginas do Sparkfun para 3.3 V Você provavelmente deve ler: Nota: Embora o silkscreen pode dizer 5V, este é um 3.3v Serial LCD. Conecte a uma fonte de alimentação de 3.3v. Fonte de alimentação Certifique-se de ligar o monitor Ground (GND) àquele do seu projecto. Mesmo se você fornecer energia a partir de uma fonte separada, como baterias. Micro controladores como Picaxe ou Arduino A tensão de alimentação deve ser escolhida ou regulada com cuidado. A maioria dos microcontroladores usa 5.0 V, mas a tendência é usar tensões mais baixas por razões diferentes. A próxima opção é 3.3 V. Se você ainda tem uma escolha durante as compras, comprar um monitor com uma tensão de alimentação que corresponde ao seu projeto, 5,0 V ou 3,3 V. Destinatários infeliz do presente tinha melhor estudo reguladores de tensão. Usuários de computador (Mac, PC, PDP11, qualquer) Seu computador provavelmente não terá uma porta serial disponível. Você precisa criar uma porta serial virtual (com-port) através de USB. Alguns desses também oferecem um pino de tensão de alimentação. Este adaptador FTDI ainda oferece uma escolha de diferentes tensões (por meio de corte de rastreamento e SMD jumper solda, mas ainda). Esta solução requer um driver para seu sistema operacional. Não testado Se você possui uma máquina de idade de pedra (como eu), você vai encontrar um serial adequado comport (RS232 com DE9 ou mesmo DB25 conector fêmea) em sua máquina. Tenha cuidado com eles. Os dinossauros os projetaram para usar tensões variando de -12 V a 12V. Se você encontrar um pino no seu portador que carrega uma tensão permanente, você precisará regulá-lo para baixo para uma tensão segura, ou emprestar um suprimento de uma fonte diferente, como baterias ou uma porta USB nas proximidades (5.0 V). Não testado Conexões de dados O display só receberá dados (RX) do seu projeto. Ele não irá transmitir (TX) qualquer. Isso é relevante quando se tenta combinar diferentes níveis de lógica entre projeto e exibição. Aqui estão alguns cenários. As dicas a seguir são verdadeiras para a maioria das conexões em série entre dispositivos incompatíveis. Certifique-se de conectar o monitor Terra (GND) àquele do seu projeto. Mesmo se você fornecer energia a partir de uma fonte separada, como baterias. Sua conexão de dados precisa de um circuito fechado também. Se o seu projeto usa tensões mais elevadas do que a tela, você pode fritar a tela. Então, novamente: escolha sua tela para corresponder ao seu projeto. Use conversores de nível de tensão se você precisar conectar dispositivos incompatíveis. Não testado Alguns até convertem de baixas para altas tensões. Picaxe não testado fala série fora da caixa. Você tem duas opções: - conecte seu monitor a qualquer pino de saída binário (e use o comando serout) testado - conecte seu monitor ao conector de programação serial (e use o comando sertxd) não testado Picaxe usa Tensão Transistor-Transistor Logic ou TTL para serial comunicação. Esses níveis passam de GND para V (tensão de alimentação). Sua exibição espera os mesmos níveis. Uma baixa tensão significa ocioso ou 1, uma alta tensão significa ativa ou 0. Picaxe chama esta convenção sinais verdadeiros. A 5.0 V Picaxe deve ser capaz de falar com um display de 3,3 V, desde que você introduzir um divisor de tensão, trazendo para baixo a alta tensão para uma baixa tensão. Observe que o circuito de download Picaxe padrão não é um divisor. Não testado Computador com computador USB com RS232 apropriado Robô Pi Sem um Hat Placas filha para sistemas de microcontrolador, se eles são escudos, chapéus, penas, capas, ou seja o que for, são uma maneira conveniente para adicionar sensores e controladores. Bem, a maioria do tempo eles são até que os desafios surjam tentando empilhar várias placas. Então você acha que a placa que você quer ser mid-stack não tem cabeçalhos empilháveis, a placa LCD superior bloqueia o RF de uma placa inferior, e cabeçalhos extras são necessários para fornecer espaço livre para o cabeamento para os servos, motores e entradas. Então você encontra algumas tábuas tentar usar os pinos para finalidades diferentes. O software entra em ação quando as bibliotecas de suporte desejam usar o mesmo temporizador ou outros recursos para diferentes propósitos. Pode se tornar uma bagunça. A alternativa é desempilhar a pilha e usar placas externas. Eu tomei esta aproximação em 2013 para uma competição da robótica. O computador nos robôs era um sistema ITX que impedia o uso de placas-filha e as portas USB eram a minha interface de escolha. Eu usei um servo controlador e dois controladores de motor de Pololu. Eles ainda estão disponíveis e estou usando-os em uma reconstrução, desta vez usando o Pi framboesa como o cérebro. USB não é a única opção, embora. Uma rápida pesquisa encontrou placas no Adafruit, Robotshop e Sparkfun que usam I 2 C. Esta abordagem tem desafios e benefícios. Uma pilha de placas filha faz um pacote puro, onde placas externas faz um emaranhado de fios. Tamanhos aleatórios podem tornar a montagem um desafio. Fornecer energia também pode ser um aborrecimento por causa da colocação aleatória de pinos de alimentação. Você não pode confiar no poder do USB, especialmente de um Pi da framboesa cujo o USB é poder limitado. Por outro lado, placas externas podem descarregar o processamento de seu processador principal. Depois que um comando é enviado, essas placas tratam todos os detalhes, incluindo os requisitos de atualização. Eles são propensos a fornecer capacidades além das bibliotecas de software do microcontrolador, uma vez que seus processadores são dedicados à tarefa. Estou usando uma placa de 18 canais da família de controladores Maestro Pololu Maestro de placas que controlam de 6 a 24 servos usando uma única placa. Você pode encontrar o Adafruit 16 canal I 2 C bordo uma alternativa útil. Para o controle do motor eu virei para a família Pololu Simple Motor Controller usando um que irá lidar com 18 ampères. Outros manipularão de 7 a 25 ampères. Ou considere o Sparkfun Serial Controlled Motor Driver. Outra fonte para controladores USB é Phidgets. Eu experimentei com um de seus dispositivos espaciais para o robô original. Eu deveria tê-lo usado para medir a inclinação desde que um dos meus robôs rolou sobre uma colina. Ooops Servo Control A placa atualmente instalada no meu robô é o Mini Maestro 18. O Maestro fornece controle sobre a velocidade do servo, aceleração e limites de movimento. Uma posição inicial pode ser definida para a inicialização ou quando ocorrerem erros. Você pode até mesmo fazer scripts ou definir seqüências de movimento para jogar no comando. No lado do hardware, o Maestro também permite que os canais sejam usados para entrada ou saída digital, e alguns canais para entrada analógica. Em alguns, há um canal para saída de modulação de largura de pulso. Um regulador onboard converte a entrada de servo de alimentação para a tensão necessária para o processador, simplificando parte do desafio de distribuição de energia. Meu robô anterior usou o Maestro para controlar os servos de pan e tilt para posicionamento da câmera, um servo para levantar amostras do chão e um LED de segurança. Duas entradas analógicas dos sensores de corrente nos motores ajudaram a evitar o burnout durante as baias, e quatro entradas de um simples transmissor fob da chave RF forneceram controle. O último veio útil para testar. Id programa uma seqüência de teste, como iniciar uma varredura de 360 câmera para marcos ou unidade para a plataforma de partida e soltar a amostra. Um botão pressionado na tecla fob iniciaria a atividade. Um botão foi sempre configurado como uma parada de emergência para parar um robô rampaging. A reconstrução está seguindo esse padrão com algumas adições. Controlador de Motor Os dois Controladores de Motor Simples (SMC) manuseavam cada um dos três motores em ambos os lados do chassis Wild Thumper. O SMC faz mais do que apenas controlar a velocidade e direção do motor. Você pode ajustar a aceleração, a frenagem e se o avanço e retrocesso operam na mesma velocidade ou em velocidades diferentes. A placa monitora uma série de condições de erro para a segurança. Estes param o motor e proíbem o movimento até que sejam cancelados. Esses erros de bloqueio incluem perda de comunicações, baixa tensão de entrada ou sobreaquecimento dos drivers. Uma capacidade adicional que achei extremamente útil é a capacidade de ler sinais de um receptor de controle de rádio (RC). Estes sinais podem ser usados para controlar o motor e, com alguma fiação cruzada entre dois controladores, fornecem controle de acionamento diferencial. Isso é útil para conduzir o robô a um novo local usando um transmissor RC. I didnt utilizar o RC entradas diretamente. Em vez disso eu li as entradas RC e emitiu os comandos de controle do meu programa. Isso me permite monitorar a velocidade em meus logs de programa para correlação com os outros dados registrados. Eu também usei uma entrada para comandar o robô em operações de controle autônomo ou RC. Há também duas entradas analógicas que podem ser usadas para controlar diretamente o motor e podem ser lidas através de comandos. Serial Communications Portas USB foram a minha escolha para as comunicações, mas há também uma porta serial de nível TTL com os pinos RX e TX padrão. Esta porta pode ser usada pelo Raspberry Pi, Arduino ou qualquer outro microcontrolador que tenha uma porta serial TTL. As placas Maestro usando USB aparecem como duas portas seriais. Uma é a porta de comando que comunica com o processador Maestro. O outro é uma porta TTL. Esta porta pode servir como um simples USB para TTL conversor de porta serial para permitir comunicações com outras placas, mesmo de outro fornecedor. Outro uso da porta TTL é para placas de Pololu de daisy chain. Eu poderia anexar as placas SMC desta maneira e salvar duas portas USB para outros dispositivos. Essas placas suportam isso por ter um pino TXIN que ANDs o sinal de TX da placa conectada com o TX na placa. Ambos os controladores suportam alguns protocolos de comunicações diferentes. Eu uso o que um Pololu criou e está disponível em alguns de seus outros produtos. Os detalhes do comando são diferentes entre as placas, mas a estrutura de comando básica é a mesma. Chamam-no seu protocolo binário, eo formato básico segue: Todos os campos são único bytes à exceção do campo de dados que é freqüentemente 2 bytes para transmitir dados de 16 bits. Os dados retornados são apenas um ou dois bytes sem formatação adicional. Observe que eles fornecem para detectar erros na mensagem usando um CRC (verificação de redundância cíclica). Isso provavelmente não é crítico sobre USB, mas uma linha TTL pode receber ruído de motores, servos e outros dispositivos. Um erro CRC define um bit no registro de erros que pode ser lido se o comando for crítico. Eu escrevi meu próprio código, C, é claro, para o PC e convertei-o agora para o Raspberry Pi. A principal alteração é o código de porta serial diferente necessário por Linux e Windows. Pololu agora fornece Arduino fonte para o protocolo tornando mais fácil de usar essas placas com essa família de placas de controlador. O chassi, Pi, e estas placas agora estão instalados no chassis Wild Thumper juntamente com um pan e tilt controlado por servos. Um LED de segurança está aceso quando a alimentação é aplicada e pisca quando o robô está controlando ativamente o sistema. Um LiPo bateria todos os poderes exceto o Pi porque eu preciso configurar um circuito eliminador de bateria para fornecer cinco volts. Im alimentá-lo temporariamente usando uma bateria USB. Um programa de teste, cruzado compilado da minha área de trabalho. Move o robô para a frente, gira para a esquerda do que para a direita e, em seguida, inverte. O movimento pan / tilt move eo LED pisca. Eu originalmente usado uma câmera web para processamento de visão, mas vai mudar para a câmera Pi, pois é melhor. O lidar de Neato discutido em um artigo precedente encontrará logo um lugar a bordo, junto com um accelerometer para detectar rollovers possíveis. Im certeza de que eu poderia ter feito isso usando placas Pi filha apesar dos desafios que mencionei anteriormente. Há trade-offs a ambas as aproximações que necessitam ser consideradas ao trabalhar em um projeto. Mas há uma vantagem final para as placas externas: eles têm um monte de LEDs twinkly. Fotos de produtos de Pololu. Post navigation Não é executado um RTOS (por padrão), mas você pode descarregar servos de condução e controladores de motor para um periférico on-chip, ou seja, o DMA. O DMA pode gerar 15 sinais de servo (perfeitamente estáveis) diretamente para os pinos GPIO, além de um canal PWM de hardware no Raspberry Pi (concedido o suporte do kernel porque ele está quebrado devido ao relógio sendo compartilhado com o I2S ou algo como Que e o kernel alegando não saber que). O DMA pode igualmente ser usado para as entradas tais como a leitura de um controlador de RC 8217s PWM ou sinal de PPM (mas você stilll somente tem 15 canaletas para todas suas entradas e saídas). Na verdade ArduPilot, sem dúvida, o controlador de robô aéreo e terrestre principal firmware, já faz tudo isso em seu HAL para o Raspberry Pi (mas ele pode usar 8220hats8221 também). Eu nunca poderia encontrar uma justificativa para uma placa como o Maestro ou o servo e escudos / chapéus analógicos. Mesmo que você não queira fazer tudo isso no controlador principal, um duino Pro Mini de 1,50 terá o prazer de tirar a carga da sua placa Linux e você pode se comunicar com ela através de sua porta de escolha, I2C, serial, SPI. Se você quiser um cabeamento puro, use uma placa proto para fazer um chapéu completamente passivo para segurar todos os cabeçalhos servo de 3 pinos e o duino opcional. (Nota: a comunicação I2C é legal, mas é projetada para comunicação interchip, não inter-módulo. A taxa padrão para linhas de sinal de até 10cm iirc) Bom ponto sobre o DMA, it8217s um desses aspectos magia negra dos processadores I8217ve nunca olhou . Para mim chegar para um Maestro é um dado porque it8217s COTS. Há sempre um tradeoff entre usar COTS e começá-lo feito contra o trabalho de let8217s em um dispositivo equivalente quando o projeto principal se encontrar na preensão. Além disso, eu sou um cara de software, não um cara mecânico ou de hardware. Os controladores Maestro podem ser bastante úteis para a velocidade do dev, especialmente para aqueles que estão apenas começando. (PC para controle serial USB sobre um monte de servos e alguns IO básico, sem programação incorporada) Um aviso os pulsos de saída para controlar os servos são escalonados, não sincronizados um com o outro. Por exemplo, se você tem servos rápidos e quer três para mover de uma vez, não há nenhuma maneira de fazer isso 8211 você achará que os servos se movem em tempos muito diferentes. (Se você precisa de tempo muito preciso, então os servos RC são improváveis de funcionar bem 8211, mas muitas vezes só pode descobrir a questão de precisão pouco antes do prazo) Deixe uma resposta Cancelar resposta Nunca perca um hack Se você perdeu Categorias Nossas colunas Comentários recentes Agora em Hackaday. io Nunca perca um hack Subscrever Newsletter
No comments:
Post a Comment