Questions tagged «microcontroller»

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

5
水位检测,其中的水被某种程度的污染并且含有大量溶解的盐
在这里发现了这种出色的QnA,它提供了测量或检测水位的多种选择。就我而言,足以区分水箱的4个水位(极低,低,中,满)。 我需要做同样的事情,但是就我而言,我不得不担心这不是完全干净的饮用水。从深管井中抽出的水似乎已被淤泥(生锈的深棕色/黑色)和大量溶解的盐污染。当淤泥通过基于5微米毡/超细纤维的沉淀物预过滤器进行过滤时,在后泵段中,它存在于地面的污水池中。盐也是一个大问题,因为它会弄脏(盐沉积)金属,塑料和几乎任何表面。任何长时间浸没在水中的金属/塑料部件都会积聚大量盐,需要将其清除掉(困难)。 考虑到这些操作环境的特征,我想知道以下哪种检测水位的方法(均来自上面引用的先前QnA)最可靠地工作,并且随着时间的推移需要最少的维护。 储罐底部的压差传感器。盐/淤泥沉积物会阻塞传感表面或其边缘,并在几个月后停止运行的机会。随着时间的流逝,盐/淤泥沉积物本身可能会导致压力读数出现误差。 浮球开关-由于它具有运动部件,我想知道是否可以通过盐/淤泥沉积物使它们运动(漂浮物的流动性降低)? 电容式感应-在引用的QnA中没有对此进行详细解释,但我在其他地方读到,它取决于水的平均介电系数,其中2个绝缘探头沿着水箱/集水槽的深度放置,相当接近。其电容随所测量的水位而变化。确切的机制尚不清楚。同样,显然,低压交流电显然用于此目的,但是再次,不清楚如何。另外,我还不清楚盐/淤泥沉积物在电容随时间的变化中可能起什么作用。 在多个级别进行电导率测试-电极放置在各个级别,当水到达放置在特定级别的特定电路时,应将其用作闭合电路。电流(例如24VDC之类的电流)在短时间内周期性地通过电路,以确定哪些电路闭合,并从这些信息中推断出水位。现在,盐/淤泥会改变电导率吗?它们会腐蚀电极吗?我可以使用铝或铜电极吗? 超声波接近感应-将此类传感器正面朝下放置,即直视储罐底部,并使用标准的接近感应机制检测水位。在我看来,这是最有希望的,因为传感器很少(如果有的话)很少与水接触。另外,它的安装应该是最简单的。然而,在所有这些方法中,这可能是最昂贵的方法,并且可能不太牢固(即在封闭的水箱/集水箱的极端湿度和温度变化下可能效果不佳)。

5
信号的幅度低于0 dB是什么意思?
我是一名软件开发人员(使用.NET,C,C ++等高级语言),试图了解计算机如何在较低级别工作。 我知道振幅总是正的,因为它是由(上下)/ 2计算的。但是,我不明白实际上是一个负振幅,即如果波低于平衡(0),那意味着什么。 看起来令人困惑的负值以分贝(dB)给出。 这可能更多是一个物理问题,但我试图理解模拟电路。

2
为热敏电阻选择偏置电阻
Rt是热敏电阻。Rb是偏置电阻,我需要计算该值。我感兴趣的温度为的Rt电阻范围4k...115k。我想要将其缩放到整个ADC分辨率,即10bit 0...1023。因此,当Rt = RbADC将其转换为时511。不知道这是可能的,但我非常希望得到0ADC读数时,Rt = 4k和1023当Rt = 115k(或其他方式)。 在MC内部,我有一个查询表,它将根据热敏电阻数据表中描述的曲线将ADC值转换为温度。

2
微控制器上未连接的引脚:内部上拉与三态相比的优缺点是什么?
有一些微控制器(例如据我所知的所有ATmega芯片)可以将端口设置为“输出”,“输入三态”或“输入内部上拉电阻”。 在未连接引脚的情况下,这些选择中的任何一个的优缺点是什么?据我所知,让它们处于输出状态是最糟糕的解决方案。芯片出厂时(我认为)所有端口均为三态输入。 我要特别询问的是这些引脚没有在任何地方焊接的情况。(或可能焊接到地面,但一般情况下不应在任何地方焊接)

2
比较在MCU和FPGA / CPLD上实现简单的自动化设计
自90年代以来,我一直在从事MCU的开发工作,最近,我使用Xilinx的Spartan6系列芯片进入了FPGA领域。假设一个简单的带有传感器和电机的工厂自动化设计,以及将所有东西链接起来的智能,那么我可以在哪种类型的设备上更快,更轻松地完成设计,MCU或FPGA?细小或“明显”的观点也应受到赞赏,因为我是FGPA的新手。

3
看门狗定时器采用哪种方法?
我最近了解了看门狗计时器,并且正在尝试为我的电路实现一个计时器,以便在我的(AVR)微控制器挂起时重置它(即,不响应看门狗)。 根据一些研究,在我看来,大约有四个选择: 将我的微控制器与外部专用看门狗定时器专用IC连接。 将我的微控制器与另一个微控制器(一些非常基本,便宜的微控制器)连接,后者被编码为看门狗计时的唯一专用目的。 布置我自己的基于555定时器的看门狗电路,并将其连接到我的微控制器。 在我的微控制器上使用内部看门狗定时器功能。 。 您会使用上述哪种方法排名较高?为什么? 我想根据制作其余设计和代码的某些标准(该设备将是电池供电的周期性温度记录器),将看门狗时间设置为6秒左右。 一点注意:为简单起见,我会选择Option 1,但是根据我发现的那对夫妇,这些零件要么看起来很昂贵(我想要的解决方案最多是1.25美元),要么只允许看门狗计时周期超过2秒。


2
如何使用MCU测量电池电压?
我目前正在使用PIC24FJ128GA010,并且打算使用输入/输出端口连接4.2 V LiPo电池,并检查电压值是否不低于3.7V。 我正在考虑将其连接到任何输入/输出引脚,但我想知道两个问题: 是正确的图钉吗? 我应该使用电阻器进行特定的剪辑吗?

5
如何连接PIC单片机?
我是PIC微控制器和电气工程领域的新手,所以请放轻松:) 无论如何,我设法对PIC 16f627进行了编程,以便在按下按钮(触发按钮)时打开三个LED,并在另一个按钮被按下时启动关闭序列(基本上每个LED彼此之间以5秒钟的延迟关断)。按下(重置按钮)。我已经在Velleman的K8048 PIC编程器/实验板上进行了测试。引脚RA0和RA2分别是触发按钮和复位按钮的输入,而引脚RB0,RB1和RB2分别是LED的输出引脚。 使用实验板很棒,但是我想将其移至实际电路。问题是我不知道从哪里开始。我已经购买了3个LED(每个3.3伏),一些按钮和电线,并构造了以下电路: (对不起的原理图很抱歉) 在我构建的电路中,我首先进行测试以查看LED是否可以使用3个1.5伏AA电池,并且它们可以正常工作,因此我认为不需要电阻器。 但是,这不起作用,我完全迷失了。供参考,这是我的PIC代码。它使用MikroC用C编写。它可以在实验板上使用,所以我认为这不是问题 void main() { TRISB.RB0 = 0; TRISB.RB1 = 0; TRISB.RB2 = 0; PORTB.RB0 = 0; PORTB.RB1 = 0; PORTB.RB2 = 0; CMCON = 0x07; TRISA = 255; for(;;){ if(PORTA.RA0 == 1 && PORTB.RB0 == 1 && PORTB.RB1 == 1 && PORTB.RB2 == …

3
这种数字数字LCD叫什么类型?
我已经在体重秤,计算器,仪表,千分尺等上多次看过这种类型的LCD。我知道它是一种相当传统的显示器,但是我非常喜欢它的紧凑,简单,甚至与TFT或智能手机相比,价格甚至更低,键入触摸显示。 [ 这叫什么?@ kevlar1818和@stevenvh的回答:“七段显示”] 我想使用这种类型的LCD,例如,我刚从Digikey目录中找到了这种8位数的VIM-878。这是它的数据表。 我如何与之交互?我想知道从简单的AVR微控制器(如Atmega8)与其进行接口的一种好/常见的方式-最好与物理上不太大的接口电路/部件进行接口。 我认为需要某种驱动程序或多路复用器?我想我正在寻找其他与这种LCD交互方面有更好经验的人一个新的视角。

3
dsPIC上的EEPROM读/写错误
我正在运行Microchip dsPIC30F6012a。我在多个运行相同软件的PCB上安装了该芯片,并在所有PCB上观察到相同的问题。这意味着系统性问题,而不是一次性生产问题。这个问题也是可以重现的,这意味着如果我知道在哪里看,我应该可以杀死它。但是我仍然很难调试应用程序。 被测板接受24V,通过V7805降压至5V。该芯片在带有16x PLL的内部振荡器上运行,运行速度约为29.5 MIPS。该板上的相关代码本质上非常简单:唤醒,从EEPROM读取数据,然后进入无限循环。每毫秒中断一次,观察一些环境数据,并将更新的值写入EEPROM。还有其他事情,但是即使不相关的代码被注释掉,问题仍然会发生,因此我可以肯定地确定它与当前的问题无关。 在一般情况下,板卡有95%的时间以正确的内存值唤醒,然后继续其业务。但是,其他5%的时间会以错误的值唤醒。具体来说,它会以本应具有的数据的位翻转版本唤醒。我正在看的是一个四字节的无符号长整数,长整数的高位或低位字都可能被翻转。例如,10变成2 ^ 16-10,之后变成2 ^ 32-10。我可以通过手动重启数十次来重现故障,但这并不是很一致,并且我的开关手指已经磨损了。 为了以受控方式重现该问题,我制作了第二块板,该板驱动被测板的24V电源。(另一个dsPIC驱动达林顿光电耦合器。)测试板将24V关断1.5秒(足够长的时间使5V电源轨降到基本为0并停留在那里一秒钟),然后将24V开通一段可配置的时间长度。凭借大约520 mS的接通时间,我每次都能在五个电源周期内重现该EEPROM故障。 5V电源轨表现合理。假设我可以相信我的示波器,它会在开机1毫秒内稳定在5V,可能会有0.4V的过冲。关断时,它以指数方式衰减至0V,在50 mS内达到1V。我没有看似相关的构建警告,只有未使用的变量和文件末尾缺少换行符。 我已经尝试了几件事: 启用/禁用MCLR 启用/禁用WDT 启用/禁用代码保护 启用/禁用/更改掉电检测电压 启用/禁用/更改开机定时器 主内部振荡器上的不同PLL设置 连接/断开我的PICkit 3编程器 在5V电压轨上增加470 uF的电容 在我的MCLR引脚上的4.7k上拉电阻上添加/移除0.1 uF 禁用代码中的所有中断,并且在主循环中仅保留EEPROM更新 开始读取EEPROM之前,在启动例程中增加了1.5秒的延迟 我还编写了单独的测试代码,除了继续将值写入EEPROM然后再将它们读回以确保该值没有更改外,它什么也没做。数以万计的迭代没有出错。我所能得出的结论是,EEPROM读取或写入出现问题,特别是在上电/掉电时。 自2007年以来,我一直在使用相同的EEPROM库。我偶尔看到故障,但没有可重复的内容。相关代码可以在这里找到:http: //srange.net/code/eeprom.c http://srange.net/code/readEEByte.s http://srange.net/code/eraseEEWord.s http:/ /srange.net/code/writeEEWord.s 我以前在其他应用程序中曾见过EEPROM错误,但始终都是一次过的小故障,没有任何可重复的或一致的。 有人知道发生了什么吗?我没办法尝试了。


3
用于蓝牙的纽扣电池?
我正在尝试确定要为我的应用程序使用哪种电池。我将使用1级或2级蓝牙(不是低能耗)模块,它需要大约50 / 60mA的RX / TX电流。此外,还有一个微控制器和一些低功耗模拟IC。我需要从设备连续获取1-10分钟的数据。 纽扣电池完全没有问题吗?我说的是CR2450锂离子电池。我真的不介意它们不会持续很长时间,但是它们会起作用吗?因为在我的应用程序中,尺寸是关键,而电池寿命是我愿意做出的折衷。

7
为什么微控制器中的数据路径总是2倍的幂?
微控制器的数据路径始终是2宽的幂:4位,8、16、32位等。即使使用12位宽指令的PIC也是8位控制器。为什么?这有设计上的优势吗?12位数据总线或7位控制器有什么问题? 编辑 7位的含义不大,但这正是让我想到这个问题的原因。答案参考了8位的传统。但是16位不是8位,而24位可以处理8位数据和16位,对吗?他们为什么跳过24位而转到32位?


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.