Índice:
- Etapa 1: Gerando o sinal Pwm para 50 Hz
- Etapa 2: Programa Arduino para Ciclo de Trabalho Variável
- Etapa 3: alternando em pinos Arduino de 50 Hz
- Etapa 4: conduzindo uma ponte H e filtrando o sinal Pwm
Vídeo: Arduino Sinewave para inversores: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
Neste projeto, gerei um sinal SPWM (modulação ampla de pulso de onda senoidal) a partir de duas saídas digitais arduino pwm.
Porque para fazer tal programa eu tenho que falar sobre muitas outras funções e propriedades do arduino, o projeto completo incluindo imagens de osciloscópios e para diferentes frequências, por favor visite meu website:
eprojectszone
Etapa 1: Gerando o sinal Pwm para 50 Hz
Para gerar um sinal de 50 Hz em frequência mais alta é necessário fazer alguns cálculos. As frequências do Arduino podem ser de 8 MHz, mas queremos um sinal com ciclo de trabalho variável.
Para entender os tipos de ciclos de trabalho variáveis do Arduino, você pode ler estas 3 partes do mesmo post 1, 2 e 3.
Vamos supor que nossa frequência seja 50 Hz, o que significa que o período de tempo é de 20 ms. Portanto, 10 ms é o período de meio ciclo. Nesses 10ms, precisamos ter muitos pulsos com diferentes ciclos de trabalho começando com pequenos ciclos de trabalho, no meio do sinal temos ciclos de trabalho máximos e finalizando também com pequenos ciclos de trabalho. Para gerar uma onda senoidal usaremos dois pinos um para meio ciclo positivo e um para meio ciclo negativo. Em nossa postagem para isso, usamos os pinos 5 e 6 que significa Timer 0.
Para um sinal suave, escolhemos pwm com correção de fase em uma frequência de 31372 Hz - consulte o post anterior. Um dos maiores problemas é como calculamos o ciclo de trabalho necessário para cada pulso. Então, como nossa frequência é f = 31372Hz, o período de cada pulso é T = 1/31372 = 31,8 us, então o número de pulsos para um meio ciclo é N = 10ms / 31,8us = 314 pulsos. Agora, para calcular o ciclo de trabalho para cada pulso, temos y = sinx, mas nesta equação precisamos de graus, então meio ciclo tem 180 graus para 314 pulsos. Para cada pulso, temos 180/314 = 0,57deg / pulso. Isso significa que, para cada pulso, avançamos com 0,57deg.
y é o ciclo de serviço ex o valor da posição na metade do ciclo de serviço. no início, x é 0, depois de x = 0,57, x = 1,14 e assim por diante até x = 180.
se calcularmos todos os 314 valores, obteremos um array de 314 elementos (digite "int" para ser calculado mais facilmente pelo arduino).
Essa matriz é:
int sinPWM = {1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
Você pode ver que, como uma onda senoidal, o ciclo de trabalho é mais baixo no primeiro e no último elemento e mais alto no meio.
Etapa 2: Programa Arduino para Ciclo de Trabalho Variável
Na imagem acima, temos sinais de ciclos de trabalho variáveis com valores da matriz.
Mas como fazer esse sinal ??
a parte do programa abaixo usa interrupções para alterar os valores dos ciclos de trabalho
sei (); // habilita interrupções
}
ISR (TIMER1_COMPA_vect) {// interromper quando o temporizador 1 corresponder ao valor OCR1A
if (i> 313 && OK == 0) {// valor final do vetor para o pino 6
i = 0; // vai para o primeiro valor do vetor (matriz)
OK = 1; // habilita o pino 5
}
x = sinPWM ; // x obtém o valor do vetor correspondente à posição i (i é indexado por zero) -valor do ciclo de trabalho
i = i + 1; // vai para a próxima posição
}
Etapa 3: alternando em pinos Arduino de 50 Hz
Porque cada pino gera apenas meio ciclo de trabalho para fazer uma onda senoidal completa, usamos dois pinos que se alternam após exatos 10 msegundos (para 50 Hz). Essa troca de pinos é feita no final da matriz - depois, digamos que o pino 5 tenha gerado 314 pulsos, esse pino é desligado e habilitado o pino 6, o que faz a mesma coisa, mas para o ciclo de trabalho negativo.
Como o arduino pode gerar apenas sinais positivos, o ciclo de trabalho negativo é feito na ponte h- você pode ler aqui sobre isso
O programa para troca de pinos:
sei (); // habilita interrupções
}
ISR (TIMER1_COMPA_vect) {// interromper quando o temporizador 1 corresponder ao valor OCR1A
if (i> 313 && OK == 0) {// valor final do vetor para o pino 6
i = 0; // vai para o primeiro valor do vetor
OK = 1; // habilita o pino 5
}
if (i> 313 && OK == 1) {// valor final do vetor para o pino 5
i = 0; // vai para o primeiro valor do vetor
OK = 0; // habilita o pino 6
}
x = sinPWM ; // x obtém o valor do vetor correspondente à posição i (i é indexado por zero)
i = i + 1; // vai para a próxima posição
if (OK == 0) {
OCR0B = 0; // torna o pino 5 0
OCR0A = x; // habilita o pino 6 para o ciclo de trabalho correspondente
if (OK == 1) {
OCR0A = 0; // faça pino 6 0
OCR0B = x; // habilita o pino 5 para o ciclo de trabalho correspondente
}
}
Etapa 4: conduzindo uma ponte H e filtrando o sinal Pwm
Os sinais obtidos do Arduino são a parte de controle para as aplicações do inversor, pois ambos são positivos. Para fazer uma onda senoidal completa e um inversor prático, temos que usar uma ponte he para limpar o pwm um filtro passa-baixo.
A ponte H é apresentada aqui.
O filtro passa-baixa testado com pequenos motores Ac - aqui.
Recomendado:
Conversor PPM para USB Joystick baseado em Arduino (JETI) para FSX: 5 etapas
Conversor de joystick de PPM para USB baseado em Arduino (JETI) para FSX: decidi mudar meu transmissor JETI DC-16 do Modo 2 para o Modo 1, que basicamente muda o acelerador e o elevador da esquerda para a direita e vice-versa. Já que eu não queria travar um dos meus modelos devido a alguma confusão esquerda / direita em meu cérebro, eu estava
Luz reativa para música -- Como tornar uma luz reativa para música super simples para tornar a área de trabalho incrível: 5 etapas (com imagens)
Música reativa luz || Como fazer música super simples luz reativa para tornar a área de trabalho incrível .: Ei, e aí galera, hoje vamos construir um projeto muito interessante. Hoje vamos construir uma luz reativa musical. O led mudará seu brilho de acordo com o baixo, que na verdade é um sinal de áudio de baixa frequência. É muito simples de construir. Vamos
Convença-se a usar apenas um inversor de linha de 12 V para CA para cordas de luz de LED em vez de reconfigurá-las para 12 V: 3 etapas
Convença-se a usar apenas um inversor de linha 12 V para CA para cordas de luz de LED em vez de reconfigurá-las para 12 V: Meu plano era simples. Eu queria cortar um fio de luz LED alimentado pela parede em pedaços e religá-lo para funcionar com 12 volts. A alternativa era usar um inversor de potência, mas todos sabemos que eles são terrivelmente ineficientes, certo? Direito? Ou são eles?
Instruções para fazer um acessório de articulação de quatro barras para apoio para os pés montado no centro: 9 etapas (com fotos)
Instruções para fazer um acessório de articulação de quatro barras para apoio para os pés montado no centro: As cadeiras de rodas elétricas de tração média (PWC) se tornaram mais populares nos últimos anos. No entanto, devido à colocação dos rodízios dianteiros, os apoios para os pés tradicionais montados na lateral foram substituídos por um único apoio para os pés montado no centro. Infelizmente, centre-mou
Adaptador 12v para USB Transformador 12v para 5v (ótimo para carros): 6 etapas
Adaptador de 12v para USB Transformador de 12v para 5v (ótimo para carros): Isso mostrará como fazer um adaptador de 12v para USB (5v). O uso mais óbvio disso é para adaptadores de carro de 12v, mas em qualquer lugar que você tenha 12v, você pode usá-lo! Se você precisar de 5v para qualquer outra coisa que não seja USB, simplesmente pule as etapas sobre como adicionar as portas USB