K210 Notas de estudo (4) - PWM de saída

1. O que é PWM?

PWM geralmente se refere à modulação por largura de pulso. A modulação por largura de pulso é um método de controle analógico que modula a polarização da base do transistor ou da porta do transistor MOS de acordo com a alteração da carga correspondente para realizar a alteração do tempo de condução do transistor ou do transistor MOS, desse modo realizando mudanças na saída de uma fonte de alimentação regulada por comutação. Este método pode manter a tensão de saída da fonte de alimentação constante quando as condições de trabalho mudam, e é uma tecnologia muito eficaz para controlar o circuito analógico usando o sinal digital do microprocessador. É amplamente utilizado em muitos campos, desde medição e comunicação até controle e conversão de energia.
PWM on MAIX BIT: Módulo de modulação por largura de pulso, PWM suportado por hardware, pode especificar qualquer pino (0 a 47 pinos), cada PWM depende de um temporizador, ou seja, quando o temporizador está vinculado à função PWM, ele não pode ser usado como um temporizador normal. Como existem 3 temporizadores, cada temporizador possui 4 canais, ou seja, no máximo 12 canais de formas de onda PWM podem ser gerados ao mesmo tempo

Dois, use

1. Construtor

pwm = machine.PWM(tim, freq, duty, pin, enable=True)

Crie um novo objeto PWM com os parâmetros especificados.
Descrição do parâmetro:
tim: Cada PWM depende de um timer para gerar formas de onda, então um objeto timer precisa ser passado aqui, e o ID do timer e o número do canal freq devem ser especificados quando o objeto timer deve ser
inicializado :
Serviço de freqüência de forma de onda PWM: Ciclo de trabalho PWM, que se refere à porcentagem do nível alto em todo o ciclo, valor: [0,100]
[pino]: Pino de saída PWM. Você não pode configurá-lo, mas use fm para gerenciar o mapeamento de pinos uniformemente.
enable : Se deve começar a gerar formas de onda imediatamente, o padrão é True, e começar a gerar formas de onda PWM nos pinos especificados imediatamente após o objeto ser gerado

2. Método

1、

pwm.init(tim, freq, duty, pin, enable=True)

construtor semelhante

2、

pwm.freq(freq)

Obtenha ou defina a frequência PWM
Descrição do parâmetro:
freq : frequência PWM, parâmetro opcional, se nenhum parâmetro for passado, a configuração da etapa retornará apenas o valor da frequência atual

3、

pwm.duty(duty)

Obtenha ou defina o ciclo de trabalho PWM
Descrição do parâmetro:
dever : O ciclo de trabalho PWM é opcional, se nenhum parâmetro for passado, a configuração da etapa retornará apenas o valor atual do ciclo de trabalho

4、

pwm.enable()

Habilite a saída PWM para gerar forma de onda imediatamente no pino especificado

5、

pwm.disable()

Desative a saída PWM, o pino especificado não gera mais forma de onda

6、

pwm.deinit()

Faça logoff do hardware PWM, libere os recursos ocupados e desligue o relógio PWM

3. Luz de respiração RGB

Respirando luz, a luz do LED aumenta gradualmente após ligar e mantém por alguns segundos quando atinge o máximo e, em seguida, escurece gradualmente até que se apague. Depois de desligar por alguns segundos, ele muda gradualmente de escuro para claro, e esse ciclo continua. Se a velocidade do ciclo estiver em sincronia com a respiração humana, é o efeito lendário da luz respiratória. Este efeito pode ser obtido por PWM, e diferentes graus de brilho e escuridão podem ser alcançados ajustando o ciclo de trabalho de PWM.

código de luz respiratória

from machine import Timer,PWM
import time


io_led_blue = 14
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch = PWM(tim, freq=500000, duty=50, pin=io_led_blue)
duty=0
dir = True
while True:
    if dir:
        duty += 10
    else:
        duty -= 10
    if duty>100:
        duty = 100
        dir = False
    elif duty<0:
        duty = 0
        dir = True
    time.sleep(0.1)
    ch.duty(duty)

Depois de executar o código online, descobrimos que a luz do LED aumentou gradualmente depois que a luz azul foi ligada e, quando atingiu o ponto mais brilhante, diminuiu gradualmente até apagar.

luz respiratória

Analise o código:
importe os objetos Timer e PWM do pacote da máquina.
Importe o objeto timer
para definir uma variável io_led_blue com valor 14, ou seja, Pin13/IO13. Qual pino do chip está conectado ao pino específico do LED, por favor consulte a introdução da placa de desenvolvimento anterior Veja o diagrama esquemático.
O ID do temporizador é especificado, que é o temporizador 0 e o canal 0.
Ao alterar constantemente o ciclo de trabalho para alterar o tempo de alto nível, alterando assim o brilho da lâmpada

4. Servo PWM

Controle do mecanismo de direção:
O controle do mecanismo de direção geralmente requer um pulso de base de tempo de cerca de 20 ms, e a parte de alto nível do pulso é geralmente a parte do pulso de controle de ângulo na faixa de 0,5 ms ~ 2,5 ms. Tomando o servo de ângulo de 180 graus como exemplo, a relação de controle correspondente é a seguinte:
0,5ms------------0 grau;
1,0ms------------ 45 graus;
1,5ms------------90 graus;
2,0ms-----------135 graus;
2,5ms-----------180 Gastar;

o código

from machine import Timer,PWM
import time

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch = PWM(tim, freq=50, duty=2.5, pin=15)
duty=2
ch.duty(duty)
ch.enable()
while True:
    ch.duty(duty)    
    for x in range(3):
        duty = 2.5 + x*6
        ch.duty(duty)        
        print("duty=",ch.duty())
        time.sleep(3)

O efeito após a execução, porque as condições são limitadas, esta miniplaca é usada para fonte de alimentação insira a descrição da imagem aqui
, a linha de sinal do servo é conectada ao PIN15, porque a divisão de frequência está entre 0-100 e é um número inteiro, portanto, alguns graus não pode ser transferido

servo PWM

Resumir

Ainda é necessário aprender a usar o PWM do MAIX BIT para lançar as bases para o acompanhamento do gimbal.

Acho que você gosta

Origin blog.csdn.net/Thousand_drive/article/details/123863399
Recomendado
Clasificación