0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

脉冲宽度调制电路的制作

454398 来源:wv 2019-10-28 08:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:说明

脉冲宽度调制电路的制作

这个世界上的每个人都有一些惯性。每次通电时,电动机都会旋转。一旦关闭电源,它将趋于停止。但是它不会立即停止,需要一些时间。但是在它完全停止之前,它再次通电!因此,它开始运动。但是即使到现在,也要花一些时间才能达到最大速度。但是在它发生之前,它已经关闭电源,依此类推。因此,此动作的整体效果是电动机连续旋转,但转速较低。

脉冲宽度调制(PWM)是一种相对较新的功率切换技术,用于在完全打开和完全关闭水平。通常,数字脉冲具有相同的开启和关闭时间周期,但是在某些情况下,我们需要数字脉冲具有更多/更少的开启时间/关闭时间。在PWM技术中,我们创建具有不相等数量的导通和截止状态的数字脉冲,以获得所需的中间电压值。

占空比由一个完整数字脉冲中高电压持续时间的百分比定义。可以通过以下方式计算:

占空比的百分比= T/T(周期)x 100

让我们提出问题陈述。我们需要生成一个占空比为45%的50 Hz PWM信号

频率 = 50 Hz

时间段,T = T(on)+ T(off)= 1/50 = 0.02 s = 20 ms

占空比 = 45%

因此,根据上述方程式求解,我们得到

T(on)= 9毫秒

T(off )= 11毫秒

步骤2:AVR计时器-PWM模式

制作PWM时,AVR包含单独的硬件!通过使用它,CPU指示硬件产生特定占空比的PWM。 ATmega328具有6个PWM输出,其中2个位于定时器/计数器0(8位)上,2个位于定时器/计数器1(16位)上,2个位于定时器/计数器2(8位)上。定时器/计数器0是ATmega328上最简单的PWM器件。定时器/计数器0可以在三种模式下运行:

快速PWM

相位和频率校正PWM

相位校正PWM

每个这些模式可以反转也可以不反转。

在PWM模式下初始化Timer0:

TCCR0A | =(1 《-设置WGM:快速PWM

TCCR0A | =(1 《-设置比较输出模式A ,B

TCCR0B | =(1 《-使用预分频器= 256设置计时器

:光强度测量-ADC和LDR。

Light依存电阻器(LDR)是一种传感器,当光落在其表面变化时会改变其电阻

LDR由半导体材料制成,以使其具有光敏特性。这些LDR或光电电阻的工作原理是“光电导”。现在,该原理说的是,每当光落在LDR的表面上时(在这种情况下),元件的电导就会增加,换句话说,当光落在LDR的表面时,LDR的电阻会减小。由于它是表面上使用的半导体材料的特性,因此实现了LDR电阻降低的特性。 LDR通常用于检测光的存在或测量光的强度。

要将外部连续信息(模拟信息)传输到数字/计算系统中,必须将其转换为整数(数字)。 )值。此类转换由模数转换器ADC)进行。将模拟值转换为数字值的过程称为模拟到数字转换。简而言之,模拟信号是我们周围的真实世界信号,如声音和光。

数字信号是数字或数字格式的模拟等效项,微控制器等数字系统已经很好地理解了。 ADC是一种可测量模拟信号并产生相同信号的数字等效信号的硬件。 AVR微控制器具有内置的ADC功能,可将模拟电压转换为整数。 AVR将其转换为0到1023范围内的10位数字。

我们使用带有LDR的分压器电路的电压电平进行模数转换,以测量光强度。

初始化ADC:

TADCSRA | =(1 《-启用ADC

ADCSRA | =(1 《-设置ADC预分频器= 128

ADMUX =(1 《-设置参考电压= AVCC; -设置输入通道= ADC0

观看视频,并详细介绍ADC AVR微控制器:AVR微控制器。光强度测量。 ADC和LDR

第4步:控制器直流电动机和双H桥电动机驱动器模块-L298N

我们使用直流电动机驱动器是因为微控制器通常不能提供不超过100毫安的电流。微控制器很聪明,但功能不强。该模块将为微控制器增加一些动力,以驱动大功率直流电动机。它可以同时控制2个直流电机,每个电机最多2安培,或者一个步进电机。我们可以使用PWM及其电机的旋转方向来控制速度。此外,它还用于驱动LED胶带的亮度。

引脚说明:

OUT1 和 OUT2 端口,用于连接直流电动机。 OUT3 和 OUT4 用于连接 LED胶带。

ENA 和 ENB 是启用引脚:通过将 ENA 连接到高电平(+ 5V),可以启用端口 OUT1 和 OUT2 。

如果将 ENA 引脚连接到低电平(GND),则会禁用 OUT1 和 OUT2 。同样,对于 ENB 和 OUT3 和 OUT4 。

IN1 到 IN4 是将连接到AVR的输入引脚。

如果 IN1 -高(+ 5V), IN2 -低(GND),则 OUT1 变高,并且 OUT2 变低,因此我们可以驱动电动机。

如果 IN3 -高(+ 5V), IN4 -低( GND), OUT4 变高而 OUT3 变低,因此LED胶带灯亮。

如果要反转电动机只是反转 IN1 和 IN2 极性,对于 IN3 和 IN4 也是如此。

将 PWM 信号应用于 ENA 和 ENB ,您可以控制两个不同输出端口上的电动机速度。

板可以接受从 7V 到 12V 的标称值。

跳线:共有三个跳线引脚; 跳线1 :如果您的电动机需要超过 12V 的电源,则必须断开跳线1 并施加所需的电压(最大 35V )在 12V 终端上。带上另一个 5V 电源,并在 5V 端子上输入。是的,如果您需要施加超过 12V 的电压(移除了 Jumper 1 时),则必须输入 5V 。

5V 输入用于 IC 的正常运行,因为卸下跳线将禁用内置的 5V 稳压器并防止更高的输入来自 12V 端子的电压。

如果您的电源介于 7V 至 12V之间,则 5V 端子用作输出。 ,如果您施加的电压大于 12V ,则用作输入

,并且跳线被移除。

跳线2和跳线3:您必须移除这两个跳线,而必须输入来自微控制器的启用和禁用信号,大多数用户更喜欢移除这两个跳线并施加来自微控制器的信号。

如果您将这两个跳线保留为 OUT1 至 OUT4 将始终处于启用状态。记住 OUT1 和 OUT2 的 ENA 跳线。 OUT3 和 OUT4 的 ENB 跳线。

步骤5:用C语言编写程序代码。将HEX文件上传到微控制器闪存中

使用集成开发平台-Atmel Studio以C代码编写和构建AVR微控制器应用程序。

#ifndef F_CPU

#define F_CPU 16000000UL // telling controller crystal frequency (16 MHz AVR ATMega328P)

#endif

#include //header to enable data flow control over pins. Defines pins, ports, etc.

#include //header to enable delay function in program

#define BUTTON1 2 // button switch connected to port B pin 2

#define DEBOUNCE_TIME 25 // time to wait while “de-bouncing” button

#define LOCK_INPUT_TIME 300 // time to wait after a button press

// Timer0, PWM Initialization

void timer0_init()

{

// set up timer OC0A,OC0B pin in toggle mode and CTC mode

TCCR0A |= (1 《《 COM0A1)|(1 《《 COM0B1)|(1 《《 WGM00)|(1 《《 WGM01);

// set up timer with prescaler = 256

TCCR0B |= (1 《《 CS02);

// initialize counter

TCNT0 = 0;

// initialize compare value

OCR0A = 0;

}

// ADC Initialization

void ADC_init()

{

// Enable ADC, sampling freq=osc_freq/128 set prescaler to max value, 128

ADCSRA |= (1《

ADMUX = (1《// Select Voltage Reference (AVCC)

// Button switch status

unsigned char button_state()

{

/* the button is pressed when BUTTON1 bit is clear */

if (!(PINB & (1《

{

_delay_ms(DEBOUNCE_TIME);

if (!(PINB & (1《

}

return 0;

}

// Ports Initialization

void port_init()

{

DDRB =0b00011011; //PB0-IN1, PB1-IN2,PB3-IN3, PB4-IN4, PB2 - BUTTON SWITCH DIRECT

PORTB=0b00010110;

DDRD =0b01100000; //PD5-ENB (OC0B), PD6-ENA (OC0A)

PORTD=0b00000000;

DDRC =0b00000000; // PC0-ADC

PORTC=0b00000000; // Set all pins of PORTC low which turns it off.

}

// This function reads the value of the analog to digital convert.

uint16_t get_LightLevel()

{

_delay_ms(10); // Wait for some time for the channel to get selected

ADCSRA |= (1《 // Start the ADC conversion by setting ADSC bit. Write 1 to ADSC

while(ADCSRA & (1《// Wait for conversion to complete

// ADSC becomes 0 again till then, run loop continuously

_delay_ms(10);

return(ADC); // Return the 10-bit result

}

// This function Re-maps a number from one range (0-1023) to another (0-100)。

uint32_t map(uint32_t x, uint32_t in_min, uint32_t in_max, uint32_t out_min, uint32_t out_max)

{

return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

}

int main(void)

{

uint16_t i1=0;

port_init();

timer0_init();

ADC_init(); // initialization ADC

while (1)

{

i1=map(get_LightLevel(),0,1023,0,100);

OCR0A=i1; // Set output compare register channel A

OCR0B=100-i1; // Set output compare register channel B (inverted)

if (button_state()) // If the button is pressed, toggle the LED‘s state and delay for 300ms (#define LOCK_INPUT_TIME)

{

PORTB ^= (1《《0); // toggling the current state of the pin IN1.

PORTB ^= (1《《1); // toggling the current state of the pin IN2. Reverse the rotational direction of the motor

PORTB ^= (1《《3); // toggling the current state of the pin IN3.

PORTB ^= (1《《4); // toggling the current state of the pin IN4. LED Tape is turn off/on.

_delay_ms(LOCK_INPUT_TIME);

}

};

return (0);

}

编程完成了。接下来,将项目代码构建并编译到十六进制文件中。

将HEX文件上传到微控制器闪存中:

在DOS提示符窗口中键入以下命令:

avrdude –c [程序员名称] –p m328p –u –U flash:w:[您的十六进制文件的名称]

在我的情况下是:

avrdude –c ISPProgv1 –p m328p –u –U flash:w:PWM.hex

此命令将十六进制文件写入微控制器的内存。观看视频,详细介绍微控制器闪存的刻录:微控制器闪存的刻录。..

好!现在,微控制器按照我们程序的指令工作。让我们检查一下!

步骤6:电路

根据原理图连接组件

插入电源,并且可以正常工作!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    集成了多功能数字音频信号处理功能的单芯片全数字音频放大器

    全数字音频放大器的工作原理基于脉冲宽度调制(PWM)技术,通过数字信号处理实现音频信号的放大与还原。
    的头像 发表于 10-21 09:40 203次阅读
    集成了多功能数字音频信号处理功能的单芯片全数字音频放大器

    【EK-RA6E2开发指南】PWM输出

    脉冲宽度调制(PWM) ,是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽
    的头像 发表于 09-23 18:17 1961次阅读
    【EK-RA6E2开发指南】PWM输出

    舵机PWM信号介绍!

    舵机 PWM 信号介绍 PWM(Pulse Width Modulation,脉冲宽度调制)信号是舵机的核心控制方式,其通过脉冲宽度变化来精确指令舵机输出轴的旋转角度。以下从信号特性、参数标准
    的头像 发表于 08-22 10:59 1465次阅读

    化繁为简!虹科基于脉冲宽度调制(PWM)的电机调控方案

    在设备开发与产线测试中,实现电机精确调速、正反转控制、位置复位及循环计数是常见需求。传统方案往往需要:电机驱动器 + 控制器 (PLC/单片机) + 信号采集模块 + 繁复接线与调试。这不仅增加了系统复杂度、成本和故障点,也拖慢了调试与部署效率。 虹科PWM电机调控方案提出一种高度集成的解决思路:通过单一设备融合PWM驱动、逻辑控制、信号I/O与参数灵活配置,简化系统,提升可控性。
    的头像 发表于 08-19 18:04 437次阅读
    化繁为简!虹科基于<b class='flag-5'>脉冲宽度调制</b>(PWM)的电机调控方案

    KA7500B脉冲宽度调制方式的开关稳压器控制器电路

    ICF KA7500B是脉冲宽度调制方式的开关稳压器控制器电路,由5V基准电压、振荡器、误差放大器、比较器、FF (触发器) 、输出控制电路、输出晶体管和死区时间比较器等电路构成,输出
    发表于 08-18 17:10 0次下载

    舵机如何控制?

    舵机是一种高精度的角度控制执行器,广泛应用于机器人、遥控模型、自动化设备等场景。其控制核心是通过 PWM(脉冲宽度调制)信号 调节角度,配合内部闭环反馈实现精准定位。以下从原理、控制方式、关键参数
    的头像 发表于 08-15 10:23 1437次阅读

    PWM逆变器的不同调制方法对比

    PWM为脉冲宽度调制(Pulse Width Modulation)的简称。由于PWM逆变器的交流侧只能输出不同的电平而非连续的正弦波,因此需要采用PWM调制技术产生幅值相同、宽度不等的脉冲
    的头像 发表于 07-16 14:00 3354次阅读
    PWM逆变器的不同<b class='flag-5'>调制</b>方法对比

    STM32H7开启单脉冲模式 PWM波脉冲宽度不受CCR控制怎么解决?

    100us产生一次更新事件 我发现脉冲宽度竟然是50而不是25当我调整CCR的值 发现脉冲宽度不受影响 调整ARR值分别为40 30 脉冲宽度 依次变为59 69这与参考手册有关章节并不符合
    发表于 06-18 07:14

    开关电源三种控制模式:PWM/PFM/PSM

    PWM/PFM/PSM 三种控制模式的定义通常来说,开关电源(DC-DC)有三种最常见的调制方式分别为: 脉冲宽度调制(PWM) 脉冲频率调制(PFM)
    发表于 06-09 16:11

    探索PWM技术:数字世界的模拟魔法

    在科技飞速发展的今天,我们身边充斥着各种智能设备和创新技术。其中,脉冲宽度调制(PWM)技术就像一位神奇的魔法师,在数字与模拟的交汇处施展魔法,让我们的生活变得更加便捷和舒适。那么,究竟什么是PWM
    的头像 发表于 05-12 09:52 940次阅读
    探索PWM技术:数字世界的模拟魔法

    UC2572 负输出反激式脉冲宽度调制器数据手册

    模式作的误差放大器, 一个振荡器、一个带锁存逻辑的 PWM 比较器和一个 0.5A 峰值 栅极驱动器。UC3572 包括一个欠压锁定电路,以确保 在任何开关活动之前,都存在足够的输入电源电压 发生,并逐个脉冲限流。
    的头像 发表于 04-08 09:25 753次阅读
    UC2572 负输出反激式<b class='flag-5'>脉冲宽度调制</b>器数据手册

    【瑞萨RA2L1入门学习】+PWM呼吸灯

    电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量
    发表于 03-30 22:28

    请问DLP4500触发器脉冲宽度可以调整吗?

    DLP4500触发器脉冲宽度可以调整吗?使用DLP LightCrafter 4500 EVM GUI似乎不能对这一参数进行调整。需要将DLP投影仪的触发信号输给Point Grey相机进行同步,但由于脉冲宽度太小无法触发成功,希望能将这一参数调整。请问如何解决该问题,
    发表于 02-28 08:13

    ICF KA7500B电压控制 PWM 调制电路

    ICF KA7500B是脉冲宽度调制方式的开关稳压器控制器电路,由5V基准电压、振荡器、误差放大器、比较器、FF (触发器) 、输出控制电路、输出晶体管和死区时间比较器等电路构成,输出
    发表于 02-20 09:10 5次下载

    ICF KA7500B电压控制PWM调制电路中文手册

    ICF KA7500B是脉冲宽度调制方式的开关稳压器控制器电路由5V基准电压、振荡器、误差放大器、比较器、FF (触发器) 、输出控制电路、输出晶体管和死区时间比较器等电路构成,输出晶
    发表于 01-07 13:46 1次下载