Questions tagged «microcontroller»

紧密耦合的独立设备中包括中央处理器(CPU),内存和(通常)各种I / O外设(UART,ADC,DAC,通用I / O,I2C等)的设备包。

5
这是MOSFET H桥的良好设计吗?
我一直在寻找能够为RC汽车电机(12V和2〜3A)设计简单但有效的H桥的方法。 该桥将由微控制器驱动,并且需要快速以支持PWM。因此,根据我的阅读,功率MOSFET是快速开关和低电阻的最佳选择。因此,我将购买额定值为24V +和6A +,逻辑电平,R DSon低且开关速度快的P和N通道功率MOSFET 。还有什么我应该考虑的吗? 好的,继续进行H桥设计:由于我的MCU将以5V运行,因此由于V gs,关闭P沟道MOSFET会出现问题。需要保持在12V +才能完全关闭。我看到许多网站通过使用NPN晶体管驱动P沟道FET来解决此问题。我知道这应该可行,但是BJT的慢开关速度将主导我的快速开关FET! 那么,为什么不像我在本设计中那样使用N沟道FET驱动P沟道FET呢? 这是设计不良还是错误?我没有看到任何问题吗? 而且,内置在这些FET中的反向二极管是否足以应付由停止(或反向)电动机感应负载引起的噪声?还是我仍然需要一个真正的反激二极管来保护电路? 解释原理图: Q3和Q6是低端N沟道晶体管 Q1和Q4是高端P沟道晶体管,Q2和Q5是驱动那些P沟道(将电压下拉至GND)的N沟道晶体管。 R2和R4是上拉电阻,以保持P通道关闭。 R1和R3是用于保护MCU的限流器(不确定它们是否需要MOSFET,因为它们消耗的电流不多!) PWM 1和2来自5V MCU。 V cc为12V


4
如何通过按钮切换微控制器的电源?
我有一个带电池电源的微控制器设备。目前,我通过简单的开/关开关来切换电源。我想通过一个按钮切换电源,同时对原理图(可能还有微控制器程序)进行最少的修改,并且在设备关闭时不消耗电源。我该怎么做? 已添加。我知道以下技巧: 在这里,微控制器在启动时将PB3设置为高电平,从而为设备保持电源。但这不是解决我的问题的方法,因为我还需要按S1 来关闭设备。 已添加。我可以从电路中排除VT2(即直接将VT1的微控制器驱动器底座)吗?

3
SMD微控制器如何预加载代码?
通常,当您购买SMD微控制器(例如AVR)或带有SMD微控制器的PCB时,它会预装板上要运行的任何程序。我想知道它是如何预加载的-我猜可以使用DIP插座对DIP IC进行编程,所以有没有特殊的SMD插座?

5
用于I / O引脚抽象的C ++类
我正在寻找硬件I / O点或引脚的C ++抽象。诸如in_pin,out_pin,inout_pin或open_collector_pin之类的东西。 我当然可以自己提出这样的一组抽象,所以我不是在寻找“嘿,您可能会用这种方式”类型的答案,而是在“看一下在此库中使用的该库”。这个项目'。 Google没做任何事情,也许是因为我不知道其他人怎么称呼它。 我的目标是建立基于这些点的I / O库,但也要提供这些点,因此例如将HD44780 LCd连接到芯片的IO引脚或I2C(或SPI)将很容易I / O扩展器或可以通过其他方式控制的任何其他点,而无需更改LCD类。 我知道这是电子/软件方面的问题,很抱歉,如果它不属于这里。 @leon:接线这是一大包软件,我需要仔细看。但是似乎他们没有像我想要的那样使用pin抽象。例如在键盘实现中,我看到 digitalWrite(columnPins[c], LOW); // Activate the current column. 这意味着存在一个知道如何写入I / O引脚的函数(digitalWrite)。这使得在不重写digitalWrite函数的情况下,无法添加新型的I / O引脚(例如,MCP23017上的一个,因此必须通过I2C对其进行写入)。 @Oli:我在Arduino IO示例中进行了搜索,但是似乎使用了与Wiring库相同的方法: int ledPin = 13; // LED connected to digital pin 13 void setup(){ pinMode(ledPin, OUTPUT); // sets the digital pin as output …
13 microcontroller  pins  c++  io 


5
24VAC / 5VDC电源设计
我计划使用MCU和一组电磁阀来创建水阀控制器。螺线管在24VAC(40mA突入,20mA保持)下运行。 MCU在消耗约100mA电流的板上,并且具有板载稳压器,因此我可以通过板载稳压器直接为其提供5V电压(绕过稳压器)或6-12V。我还希望运行其他5V外围设备(即传感器,显示器,一些LED等),因此,我需要500mA的5VDC稳压电源。 从理论上讲,我可以将24VAC变压器的整流/滤波输出调低至〜12V,并使用板载稳压器将其进一步调至5V,但是(作为比较)我会耗散大量电能作为废热。我的调节器需要散热,并且可能需要主动冷却(所有这些都将放在车库的一个箱子中,该箱子通常会升至约110F ...)。我还考虑过使用开关稳压器而不是线性稳压器,但是我对这些稳压器有零经验,而且我不知道如何将原理图组合起来做我想做的事情,或者它在理论上是否是现实的。作为线性稳压器的想法。 我的想法是,使用中心抽头的24VAC变压器,并从中心抽头将12V整流/调节至5VDC以运行MCU,并在整个输出中使用24VAC来驱动螺线管。 这是合适的设计吗?以这种方式使用中央水龙头可以吗?

4
从深度睡眠模式中唤醒
大多数微控制器(例如AVR,MSP430,PIC等)都支持许多不同的睡眠模式。“最深”的睡眠模式声称功耗最低(例如“掉电”,“关闭”),但是所有时钟系统通常都在这些模式下停止运行,在我看来,唯一的方法是“ “唤醒”是通过外部刺激(例如,引脚更改中断,芯片复位)。我想念什么吗?是否有极低功耗的方法为MCU生成定期唤醒信号? 假设我的目标是最大程度地降低功耗(即,尽可能长时间地睡眠,尽可能短时间保持清醒),同时定期唤醒执行功能,实现这种行为的常用方法是什么?为了进一步简化问题,让我们假设我的函数是无状态的(执行该函数,我不必记住过去的任何内容)。 我在MSP430上使用WDT取得了一些成功。我只是以我的主要例程为函数,最后一行使看门狗定时器在一定时间后到期,并进入LPM4.5或称为“深度睡眠”模式的任何内容。最终结果是执行了该功能,MCU进入睡眠状态,WDT到期,并且芯片复位,令人作呕。似乎可以正常工作,只是想知道是否有“更好”,“更优雅”或“更节能”的方式来获得这种行为? 我还没有在AVR上尝试过这种方法,但是我认为WDT在AVR中比在MSP430上更“耗电”,因此对于低功耗工作可能没有吸引力。也许没有一种“通用”的低功耗方法,您必须使用给定产品线提供的工具吗?我知道新的picoPower系列具有许多事件处理系统和睡眠行走等超凡脱俗的功能,在某些情况下,如果您可以使应用程序适合该结构,则几乎不需要CPU处于唤醒状态。 够我流浪了,在这里让您不得不说:) 编辑 说明技术的具体示例也很酷!

11
低功耗无线电+微控制器推荐?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为电气工程堆栈交换的主题。 3年前关闭。 我正在寻找一种低功耗片上系统,该系统具有以下优点: 处理器(任何架构) 收音机(任何频率/比特率/发射功率) 2个或更多I / O引脚(ADC将是一个奖励) 谁能推荐一个设备? 我应该看哪些芯片公司?

7
市场上有哪些内置了可编程逻辑的微控制器(类似FPGA / CPLD)?
受问题的启发,我想问一下内置了哪些具有CPLD或类似FPGA功能的微控制器?最有趣的是低成本的友好包装(非BGA)。CPLD / FPGA部分应足够大,以允许实现相当复杂的状态机(10+个状态),相当大的逻辑功能(10+个输入),相当大的计数器和移位寄存器(8个以上的位),并能够以数十个时钟运行兆赫频率。用于可编程逻辑功能的设计输入的首选方法应该是基于HDL(Verilog或VHDL)。 到目前为止,我发现了两个示例: 1)来自Atmel的FPSLIC 2)来自赛普拉斯的PSOC3和PSOC5(除样品量外,其他均不可用)

6
开始PIC编程
我一直在进行一些PIC编程,但是与其他可用的其他微控制器不同,可用的不同芯片数量之多使我有些困惑。似乎在某些站点上建议的某些芯片对于刚开始使用PIC编程的人来说是不错的选择,但是这些芯片可能已经被取代(或者我可能变得更加困惑)。 所以我的问题可以归结为三个部分: 首先是什么好的PIC芯片? 我很高兴使用汇编语言或其他某种语言,因此您对Linux建议使用哪种IDE /语言? 在通过Linux笔记本电脑通过USB连接(PicKit 2?是可能的)通过芯片将代码获取到芯片上时,您有什么建议?我需要哪种电路/板配置? 编辑:在与Kortuk进行了长时间的讨论(请参阅下面的评论)之后,我决定开始使用PicKit2入门工具包。随附安装了PIC16F690芯片。

6
在嵌入式系统中使用中断时避免全局变量
对于避免全局变量的嵌入式系统,是否有一种在ISR与程序其余部分之间实现通信的好方法? 似乎一般的模式是要有一个在ISR和程序的其余部分之间共享并用作标志的全局变量,但是这种全局变量的使用对我而言是不利的。我提供了一个使用avr-libc样式ISR的简单示例: volatile uint8_t flag; int main() { ... if (flag == 1) { ... } ... } ISR(...) { ... flag = 1; ... } 我看不到本质上是一个范围界定问题。当然,ISR和程序其余部分都可以访问的任何变量必须固有地是全局的?尽管如此,我经常看到人们说的是“全局变量是实现ISR与程序其余部分之间通信的一种方式 ”(强调我的意思),这似乎暗示着还有其他方法。如果还有其他方法,那是什么?

7
需要具有几乎无限的读/写操作能力的非易失性存储IC
我需要一个内存解决方案,该解决方案将用于跟踪基于微控制器的项目中的累计计数。 通过累计计数,我的意思是说微控制器使用此存储位置来保留事件发生的计数。断电期间需要保留该计数,因此需要非易失性存储器。 另外,计数增加事件的发生是频繁的,因此将有很多写入存储器,因此我犹豫使用EEPROM。 首选的通信接口是I2C,但也欢迎使用其他替代方法。 我想到的是SRAM低功耗易失性存储器IC,可以选择在断电时由备用电池(例如纽扣电池)供电。


5
为什么还要打平价格呢?
我在应用程序中使用SPI外设。外设返回包含15个数据位以及偶数奇偶校验位以进行错误检测的数据包。 因此,所有零和全部都通过奇偶校验。 这意味着我的微控制器无法检测到最常见的错误类型:外围设备已断开连接!在这种情况下,接收到的位全为零,这将通过奇偶校验。 假设外设的制造商实施奇数奇偶校验同样容易,我的问题是:在这种情况下,为什么他们选择使用偶数奇偶校验?在这种情况下,Even Parity是否还有其他优势来弥补无法捕获最常见错误类型的事实?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.