Proteus单片机控制直流电机测速部分 74LS386 编码电机motor-encoder

Proteus单片机控制直流电机测速部分 74LS386 编码电机motor-encoder,第1张

可以参考之前我的回答:proteus motor-encoder有五根线,左右两侧两根线接电源。下面三根线,左右两侧两根中腔裤线输出相位圆悄差90度的脉冲,每旋转一圈输出多少个脉冲可以在设置对话框中设置,中间那根线,每圈输出一个脉冲。motor-encoder的电源电压可以在设置框中设置。转速显示的单位是rpm.有单片机开发控制器订做问卖简题或许我这可以帮助的。

大家好!今天让小编来大家介绍下关于proteus仿真传感器的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

文章目录列表:

1、proteus软件元件库中怎么找到传感器

2、有没有能再proteus中能仿真的湿度传感器?那个版本的proteus?

3、proteus中电量传感器实物是什么

4、proteus 如何仿真光电传感器

一、proteus软件元件库中怎么找到传感器

传感器可以在Transducer库中找,我看到里面有光敏,压力,温度传感器,似乎没有看到霍尔,其实简单的霍尔可以用Source 通过适当的设置来模拟追问

怎么设置?选Source中哪个器件?

追答

看你用的场合,用于一些脉冲比如运动检测场合,可用Simulator Primitives库里的IPULSE设置,如果是在电机控制环路里可以用类似变压器的方法来实现

追问

我是新手,老师要求设计的是汽车测速器,需要类似于霍尔传感器之类的传感器,要有脉冲。用proteus和keil c进行仿真和编程。怎么设置传感器才会实现霍尔传感器的测速功能呢?说得具体点儿啊,谢谢啊!

追答

这个是开环的,很好设置啊,找个Source,比如IPULSE ,输出脉冲就可以了

参考资料:为您回答的内容来自Hanson原创

二、有没有能再proteus中能仿真的湿樱喊度传感器?那个版本的proteus?

目前最高版本的PROTEUS中的可变电容是没有仿真模型,所以不能仿真,警告说的就是这个。只好用一个固定电容(当然要找个有仿真模型的。)来仿真了,要改变湿度时,停止仿真,改变电容值再仿真。目前最高版本的PROTEUS中没有HS1101。但有如下的温度+温度的传感器:SHT10 TRXD Humidity &Temperature Sensor - 2 wires serial interface.SHT11 TRXD Humidity &Temperature Sensor - 2 wires serial interface.SHT15 TRXD Humidity &Temperature Sensor - 2 wires serial interface.SHT21 TRXD Humidity &Temperature Sensor - I2C.SHT25 TRXD Humidity &Temperature Sensor - I2C.SHT71 TRXD Humidity &Temperature Sensor - 2 wires serial interface.SHT75 TRXD Humidity &Temperature Sensor - 2 wires serial interface.但它们分别是IIC(I2C)和SPI接口。你的HS1101是电容型的,可以用一个可调电容先来模拟它。

三、proteus中电量传感器实物是什么

严格来说,这里的电位器可以代表任何传感器,或者说是一个广义传感器的模型,用于仿真用,你所给的这个原理图就是一个使用ADC0832双通道串行的模数转换器(AD)将两个传感器(RV3,RV1)的信号进行采集,然后在单片机里面对采集的信号进行处理。传感器的信号范围是0-5V。Proteus仿真不是万能的,对于传感器比较靠谱的做法是根据传感器的性质和信号输出类型选择模拟替代仿真方案,比如空气质量传感器输出的是电压信号,就可以用电位器分压去替代仿真,如果输出是数字脉冲信号就可以用Proteus中的信号源去替代仿真。

四、proteus 如何仿真光电传感器

推荐于

proteus现在没有几个光电传感器,就有一个 LDR 是电阻变化的光传感器你的目的是什么光电传感器有电阻变化,以及光电二极管直接产生电流两种如果要模拟电阻桐握变化,你可以用这个LDR也可以用可脊轮野调电阻模拟如果模拟光电二极管电流,你可以用压控电流源模拟

以上就是小编对于proteus仿真传感器问题和相关问题的解答了,proteus仿真传感器的问题希望对你有用

#include<reg51.h>

#define Tpwm 0xfc18//PWM周期对应的计数值1ms,基于12MHz晶振

unsigned int duty[]={0,/*0*/

0xff9c/*100us*/,0xff38/*200us*/,0xfed4/*300us*/,\

0xfe70/*400us*/,0xfe0c/*500us*/,0xfda8/*600us*/,\

0xfd44/*700us*/,0xfce0/*800us*/,0xfc7c/*900us*/,\

0xfc18/*1000us*/}//PWM高电平时间

unsigned char i=0

sbit P32 = P3^2

sbit P33 = P3^3

sbit PWMOUT = P2^0

sbit PWMIN1 = P2^1

sbit PWMIN2 = P2^2

bit flag = 1//PWM输出电平状态,1为输出高电平时间,0为输出低电平时间

void delay10ms(int n)

void  main(void)

{

PWMOUT = 0//初始化L293D ,停止电机

PWMIN1 = 0

PWMIN2 = 1

EA = 1  //开总中断

IT0 = 1  //中断方式为跳变

IT1 = 1

EX0 = 1  //打开外部中断0

EX1 = 1  //打开外部中断1

ET0 = 1  //开定时器0中断允许

TMOD = 0x01 //设置定时方式

while(1)  //等待中断

{

/*在此可以实现其它任务*/

}

}

//10ms延时函数

void delay10ms(int n)

{

int i=0,j

while(n--)

{

for(i=0i<10i++)

{

for(j = 0 j < 125 j++)

}

}

}

void keySpeeddownISR() interrupt 0 //按键中断服务程序

{

EA = 0   //关中断

delay10ms(2)  //延时消抖

if (!P32)    //确认按键按下,滤除键盘抖动干扰

{//减少PWM高乱裂电平时间

if(i>晌陪仔0)

i--

if((TR0=1) && (i == 0))

{

TR0 = 0

PWMOUT = 0

}

}

EA = 1

}

void keySpeedupISR() interrupt 2 //按键中断服务程序

{

EA = 0   //关中断

delay10ms(2)  //延时消抖

if (!P33)    //确认按键按下,滤除键盘抖动干扰

{//增加PWM高电平时间

if(i<=10)

i++

if((TR0 == 0) && (i > 0))

{//启动PWM,电机顺时针旋宴汪转

PWMIN1 = 0

PWMIN2 = 1

PWMOUT = 1

TH0 = duty[i]>>8

TL0 = duty[i]&0xff

TR0 = 1

flag = 1

}

}

EA = 1

}

void T0ISR() interrupt 1 //定时器0中断服务程序

{

EA = 0   //关中断

if(flag)

{//高电平时间结束,输出低电平补齐PWM周期

PWMOUT = 0

TH0 = (65535-(duty[i]-Tpwm))>>8

TL0 = (65535-(duty[i]-Tpwm))&0xff

flag = 0

}else

{//周期结束

PWMOUT = 1

TH0 = duty[i]>>8

TL0 = duty[i]&0xff

flag = 1

}

EA = 1

}

仅供参考。学单片机还需自己多多思考和练习


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12304665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存