能arduino 遥控器红外遥控器实现对电路电流进行调节吗

现在的位置:
简单动手,红外遥控就可变无线遥控,解决红外对不准有偏差的问题
最近弄一个远距离的遥控器,于是,首先使用红外线遥控器,加大发射功率到 1W,5W......!
可是,尽管能够发射很远,可是,一抬手,就希望照射到那个仅仅一厘米见方的接收头,几乎不可能。距离越远,这个问题越是突出。对不准哦!得找"神枪手" ?
自己测试时,抬手十次,竟然没有一次可以照射中目标的。不得已,附加一只可见光的激光管,一起点亮,这才知道偏差有多么的远! ----- 远距离使用,不好使哦!
接着,改变想法,希望使用市场上许多新的无线电传输模块 ---- 能够达到 300 米距离以上的,一对模块并不会很便宜,结果,委托人不能接受。
还有一种无线模块,比较老字号的,DF315 发射头,还有超再生接收,超外差接收等等配套的接收模块。这种模块只能单向通信,但是价格相对低很多。即使号称可以达到 3000米 以上的。一对模块也就不超过 30 元。----- 就用它了!
于是乎,找出过去实验用过的,加上一些新购买的,牌子不少,品种丰富:
红外线遥控器基本电路不用怎么大动干戈,原理图上,去掉红外线发射管,添加上插入无线发射模块的插座,改成下面这样:
各家供货商的发射模块,引脚顺序竟然各不相同,就这么三个引脚,竟然有多种多样的排列顺序。令人"佩服"! 因此,使用时需要认真看看印刷板上字符标注,不要插入错误了!
接收模块那头呢? 也一样考虑,去掉红外线一体化接收管, 改接无线接收模块。 接收模块引脚注意事项与发射模块一样,得留心了。
就这样,红外线遥控器就立即变成无线电遥控器了! ------ 发射和接收的芯片源代码可以一点不用改动,就可以立即投入使用!
如此一来,就用不着"神*手"来操作了,在有效范围内(无须受视距限制),你随手一按就是了。
有效范围的"范围",主要由发射头决定。100 米内到 3000 米外,一味更换发射头就是了。不用再找工程师,自己就可以亲自试一下!
原文链接:
搜索爱板网加关注,每日最新的开发板、智能硬件、硬件、活动等信息可以让你一手全掌握。推荐关注!
【微信扫描下图可直接关注】
科技早知道:
【上篇】【下篇】
您必须才能发表留言!Arduino控制小型直流电机 | 创元素Arduino的详细介绍(基于Mega2560)
我的图书馆
Arduino的详细介绍(基于Mega2560)
1085人阅读
很早之前入手了一块Arduino Mega2560,当时只是认为其操作简单且更加人性化,开源方便,想了解了解。最新搞项目想用Arduino试试控制8路舵机,但网上找的Servo库大多说只支持9,10接口,很是恼火(资料怎么写就怎么搬,到底是不是只支持9,10接口有几个知道?又有几个知道为什么?)。
另外本人长期逛各种论坛,发现国内民间创客极客水平还是普遍低下的,Arduino虽说开源但国内确实找不到多少参考资料,这无形之中成了小小的阻碍,于是本人花了点时间为广大Arduino爱好者整理翻译此份资料,一是想丰富网上资源,二是以一种更加简便的方式带部分人入门。了解原理才能谈创意,不求甚解只能做个小玩家。
了解Arduino的最好平台当然是官网,我相信官网肯定不会遗漏自己产品最有特色的东西,因此以它为参考绝对没错。另外,必要部分辅助以百科,以及各位广大亲爱博友的资料(就不一一列举了,在此谢过)。本文以Arduino Mega 2560为基础解释,其他板子都差不多。
Arduino Mega 2560是基于ATmega2560的微控制板,有54路数字输入/输出端口(其中15个可以作为PWM输出),16路模拟输入端口,4路UART串口,16MHz的晶振,USB连接口,电池接口,ICSP头和复位按钮。简单地用USB连接电脑或者用交直流变压器就能使用。
Mega 2560 是Arduino Mega系列的升级版。Mega 2560与之前的板子(最大)不同在于:它没用FTDI USB-to-serial驱动芯片,而是用ATmega16U2编程作为USB-to-serial传输器(V1版本使用8U2)。
总结如下:
ATmega2560
输入电压(推荐)
输入电压(限制)
54 (含15路PWM输出)
模拟输入口
每个I/0口直流电流
3.3v口直流电流
闪存(Flash Memory)
256 KB(其中8 KB用作bootloader)
静态存储器(SRAM)
这部分就不说了,涉及3.3v和5v供电。
三:存储器
ATmegak的闪存可存储程序(其中8kb用作bootloader),有8kb的SRAM和4kb的EEPROM(可使用进行读写)。
随机存取存储器(英文:random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。
按照存储信息的不同,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。
SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random&Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,且功耗较大。所以在主板上SRAM存储器要占用一部分面积。SRAM的速度快但昂贵,一般用小容量的SRAM作为更高速CPU和较低速DRAM
之间的缓存(cache)。
(2)EEPROM
带电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM&Eraser和编程器的束缚。
(3)闪存(Flash Memory),EEPROM的变种:
在断电情况下仍能保持所存储的数据信息分为NOR型与NAND型闪存(NAND型更为普遍常见,一般说的是NAND型):
内存和NOR型闪存的基本存储单元是bit,用户可以随机访问任何一个bit的信息。
而NAND型闪存的基本存储单元是页(Page)。每一页的有效容量是512字节的倍数。&NAND型闪存以块为单位进行擦除操作(一块一块地擦)。闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是闪存的基本操作。一般每个块包含32个512字节的页,容量16KB;而大容量闪存采用2KB页时,则每个块包含64个页,容量128KB。&
简言之,RAM数据断电不可保存,因而常用于CPU与外设之间做缓存用;EEPROM掉电数据不丢失,用于编程读写使用;有时由于需要改写的数据量比较大,因而在EEPROM基础上出现了Flash Memory(NAND型)。我们编写好程序之后就是在bootloader引导下下载到Flash Memory里面的(因为每次程序下载都有重新刷新一个区域块来保存下载的程序,因而使用Flash Memory)。我相信新手对各种存储器都会有一定了解了。
四:输入输出
54路接口都可作为输入输出,并使用功能。5v电压操作,每个接口的电流最大40mA并且接口有内置20-50千欧的上拉电阻。另外,有的接口有特殊功能。
Serial(串口):
Serial 0:0 (RX) and 1 (TX);&
Serial 1: 19 (RX) and 18 (TX);
Serial 2: 17 (RX) and 16 (TX);&
Serial 3: 15 (RX) and 14 (TX).
一共四组串口。其中Serial0也被连接到Tmega16U2 USB-to-TTL Serial芯片(上文有介绍,我们USB连接电脑用的就是这个串口)。RX接收数据,TX传输数据。
External Interrupts(外部中断):
2 (interrupt 0),&
3 (interrupt 1),
18 (interrupt 5),&
19 (interrupt 4),&
20 (interrupt 3),&
21 (interrupt 2)。
每个引脚都可配置成低电平触发,或者上升、下降沿触发。详见功能。
PWM(脉冲调制):
44~ 46口。
提供8位PWM输出。由 功能实现。
SPI(串行外设接口):
50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS)。使用库实现。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线CS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)MOSI– SPI总线主机输出/ 从机输入(SPI Bus Master Output/Slave&Input);
(2)MISO– SPI总线主机输入/ 从机输出(SPI Bus Master Input/Slave&Output);
(3)SCLK –时钟信号,由主设备产生;
(4)CS – 从设备使能信号,由主设备控制(Chip select),有的IC此pin脚叫SS。
其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。
接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过&SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
例:现有1,2号设备支持SPI接口,则可以都挂到主控的SPI线上,之后如果要控制1号设备,则由主控发送CS=1号,选中1号设备,那么1号设备就可以通过MOSI,MISO两根线在SCLK时钟控制下和主机进行通信了。
13引脚。这是板上自带的LED灯,高电平亮,低电平灭。
20 (SDA) 和21 (SCL)。使用Wire library(点击查看详细介绍)实现功能。
TWI(Two—wire Serial Interface)接口是对I^2C总线接口的继承和发展,完全兼容I^2C总线,具有硬件实现简单、软件设计方便、运行可靠和成本低廉的优点。TWI由一根时钟线和一根传输数据线组成,以字节为单位进行传输。TWI_SCL\TWI_SDA是TWI总线的信号线。
SDA是双向数据线,SCL是时钟线SCL。在TWI总线上传送数据,首先送最高位,由主机发出启动信号,SDA在SCL 高电平期间由高电平跳变为低电平,然后由主机发送一个字节的数据。数据传送完毕,由主机发出停止信号,SDA在SCL 高电平期间由低电平跳变为高电平。
模拟输入:
Mega2560有16个模拟输入,每个提供10位的分辨率(即2^10=1024个不同的值)。默认情况下他们测量0到5v值。可以通过改变AREF引脚和analogReference()
功能改变他们变化范围的上界。
AREF:是AD转换的参考电压输入端(模拟口输入的电压是与此处的参考电压比较的)。使用完成功能。
参考电压是5V,AD精度是10位的,
在模拟输入端输入2.5V,AD转换结果就是512(1024×(5/2.5))
Reset:低电平有效,不用多说了吧。
Arduino Mega2560提供4路UARTs通信,即Serial通信。数据通过ATmega8U2/ATmega16U2时候指示灯会闪烁(除了0和1口)。
使用可以使用Mega2560的任意数字接口通信。Mega2560同样支持TWI和SPI通信。
Mega2560使用Arduino IDE环境编程(这个相信再新的新手也知道)。事先在闪存(Flash Memory)里烧入bootloader引导程序(上文介绍有8kb),这样我们就可以每次下载程序了。它使用的是原始的STK500通信协议。(bootloader一般使用C语言或者汇编编写,考虑部分人的兴趣,这里也提供些资料:)。
你也可以绕过bootloader利用通过ICSP (In-Circuit Serial&Programming)header来编程(这是采用额外编程器的方式,这种方式当然不赞成,很麻烦)。
The ATmega16U2(上面说的串口编程芯片,Mega2560的特色)固件源码可以从获得。ATmega16U2/8U2使用DFU&bootloader下载,可以用以下方式激活:
1.V1版本的板子:连接板子后面的跳线(靠近意大利的地图),之后重置ATmega8U2(1版本为这个芯片)。
2.V2及之后的版本:有个将8U2/16U2 HWB线连到地的电阻,它使板子很容易进入DFU模式,你之后可以使用 (Windows) 或者&&(Mac OS X and Linux) 下载新的固件。或者你可以使用额外的编程器通过ISP下载(跟上面跳过bootloader下载程序时的方法一样,此方法高端啊)。具体参考:Seefor more information.
七:自动(软件)复位:
八:USB过流保护:
不说了,好的硬件设计应该这么做。
九:物理特性和兼容:也不说了,都是继承和发展。
版权声明:本文为博主原创文章,未经博主允许不得转载。
上一篇下一篇
馆藏&24135
TA的最新馆藏
喜欢该文的人也喜欢相关文章推荐
1、硬件部分
红外接收管,也就是接收红外光的电子器件(代码未按照这个方式接线)
2、代码部分
int RECV_PIN = 11;
//红外引脚
int led_p...
“登”,亮了.,
每当我游走在图书馆书架之间就会有这样的一个情景。
这次实验使用的模块是人体红外传感器(HC_SR051),配上Arduino Uno 实现人体感应灯的实现。
先看看这...
家中电视机,空调家电都是用红外遥控的,
这次实验,就是看看其接收与发射的原理。...
人体红外模块非常简单,就是普通的三针(VCC,GND,DATA),高电平为有活动人体被检测到,低电平为没有检测到活动人体。需要注意的是模块上有几个可以设置的地方:一、触发方式:
L不可重复,...
硬件:Arduino uno板、红外遥控器、红外接收三极管、舵机、杜绑线;
端口:红外接收管VOUT脚接11,舵机信号接9;
效果:随机按红外遥控器1~9之间数字,对就舵机旋转20、40、60、...
1、硬件部分
数码管,常见的用来显示数字的,比如像计算器。这回我们就要来好好研究一下数码管,看看它是如何工作的。数码管,其实也算是LED中的一种。数码管的每一段,都是一个独立的LED...
Arduino 读取遥控器,例子程序正常,换到自己程序,每次读取的数值总是不一样?Why?测试环境为Arduino urn和Mulie-functions Shidle,读取用的Arduino-IRr...
在上一篇,制作了一块可以接收红外信号的板子,并且向板子发送了开关按键的信号...
这几天在看红外遥控器和红外接收器的介绍,接线很简单,实物连接图如下:
网上给的例子也很简单,具体的代码如下:#include
// 使用IRRemote函数库 const int irRecei...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)技术小站:
地点:西安
时间:11月16日 14:00 - 17:00
地点:东莞
时间:11月9日 14:00 - 17:00
地点:深圳
时间:11月8日 13:00 - 17:30
地点:深圳
时间:11月2日 14:00 - 17:00
张飞电子工程师第一部
高速PCB设计指南进阶培训
韦东山linux驱动开发学习
了解RTOS操作系统开发流程
张飞硬件开发全套视频
讲师:孟瑞生
讲师:林超文
讲师:李述铜
讲师:郑振宇
移入鼠标可放大二维码
四轴飞行器Arduino控制多电调控制测试
来源:黑客空间
作者:黑客空间日 15:36
[导读] 我们原定的目标就是通过Arduino来作为四轴飞行器的控制板,那么必然就需要用Arduino来控制四个电机的转速,其实就是多PWM输出。在去年我已经实现了单电机的输出,发现了不少问题。
& & & 很长时间没折腾了,因为前段时间忙家里的事情、学校的事情,所以就耽搁了。昨天搞了一个通宵,搞定了今天上午的一个报告,下午就继续搞飞机了。
  我们原定的目标就是通过Arduino来作为四轴飞行器的控制板,那么必然就需要用Arduino来控制四个电机的转速,其实就是多PWM输出。在去年我已经实现了单电机的输出,发现了不少问题。
  首先,舵机的信号格式和我们用的电调的信号格式是相同的,一般来说,航模上的电调信号线接于接收器的三号通道上,但是,如果接在别的通道上也是能正常工作的,这也证明了他们之间信号是相同的。
  但是,上次通过Arduino上的Servo库来控制电机时,发现Servo库输出的pwm宽度会超过电调接收的范围,从而导致电机无法启动。然而,通过遥控器遥控时就不存在这个问题。所以,我今天就首先对遥控器的pwm信号进行测量,然后对Arduino输出的pwm信号进行测量。然后计算出控制方式。注意:这里的pwm信号是通过Arudino上Servo库输出的pwm信号,它是脉冲宽度调制,不是Arduino默认的pwm,默认的pwm是通过占空比来模拟一个模拟量。
  好了,不多说,上图。
  首先,测试电池是否有能力带动两个电机同时稳定地工作,我用遥控器电路对他们进行了测试。先搭建了一个下图所示的电路,进行测试。
  然后就需要测量遥控器输出的脉冲宽度和Arduino输出的脉冲宽度,搭了下面这个电路。为此我还去买了能测占空比的ut10a,但是那个万用表实在不给力,根本没有办法量到数据。-_-b
  这张图当中电调只是起到供电的作用,所以并没有连电机。
  无奈,但是发现Arduino有pulseIn()这个函数,可以计算一个高电平或低电平持续时间,正好,把数据拿下了。
  最高位: 1900us
  最低位: 1100us
  那么就碰到了另外一个问题,既然没有仪器来测量脉冲宽度,那如何去测量Arduino输出的PWM脉冲的宽度呢?我在万念俱灰的情况下,把两个Arduino上的数字端口连在了一起,就像下面图中的一样,看看是否能自己测量自己。
电调控制相关文章
电调控制相关下载
Arduino相关文章
Arduino相关下载
技术交流、积极发言! 发表评请遵守相关规定。
随着物联网技术的突飞猛进,生活中越来越多的家庭设备将会联上网络,变得“智慧”起来,智慧家庭的概念成了这几年媒体、企业、用户关注的焦点,而...
研华IoT嵌入式平台事业群总经理许杰弘表示,工业物联网 2009年就开始提出,至今缺乏临门一脚,现在是打开大门的时候了。研华WISE-PaaS物智联软件平台和...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-}

我要回帖

更多关于 arduino红外遥控器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信