电子发烧友App

硬声App

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

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

3天内不再提示
创作
电子发烧友网>电子资料下载>电子资料>Arduino Nano控制浮动和旋转地球仪

Arduino Nano控制浮动和旋转地球仪

2022-11-11 | zip | 0.10 MB | 次下载 | 2积分

资料介绍

描述

项目目标

该项目的目标很明确:通过磁悬浮并由 Arduino Nano 控制,使物体漂浮。

但也有一些要求。

首先,我想要一个具有一定大小和重量的物体,以一种非常稳定的方式漂浮(没有抖动、没有振荡……)。

此外,安全性也是一个问题(主磁铁的额定电压为 24 伏和 25 瓦,会产生相当多的热量)。

最后但并非最不重要的一点是:最终结果必须是“不错的”,在我的客厅中赢得一席之地!

我终于想出了一个地球仪,它不仅可以漂浮,而且还以固定的速度旋转,由两个数控 LED 灯条照亮。

磁悬浮原理

实现磁悬浮的一种方法是将电磁体放置在包含非常强磁体的物体(在本例中为地球球)上方。通过不断地测量物体的垂直位置,我们可以改变电磁铁对物体磁铁施加的磁力,从而使物体保持在原位。这与在高速公路上驾驶汽车的方式非常相似:通过不断测量汽车是向左还是向右漂移,驾驶员只需进行小幅修正就可以留在他/她的车道上。这种机制称为“控制系统”。

不深入细节,困难的是这个磁悬浮控制系统根本不是一个“线性”系统。例如,施加到电磁体的电流与施加的力(在地球的磁铁上)之间的关系是二次的。此外,这个力随着电磁铁和磁铁之间的距离而变化(这似乎是合乎逻辑的)。而这种关系也是二次的!

这意味着用于保持全球位置稳定的“参数”(我们稍后会讨论)至关重要。改变地球的重量、磁铁、电磁铁、传感器的位置……可能会导致地球高度不稳定,并且您将很难找到正确的参数(这将是反复试验,我恐怕)再次获得稳定运行。事实上,这种非线性也使得应用数学方法来计算这些参数变得更加困难。

因此,如果您想自己构建它,请提一个建议:尝试获得与我使用的相同的起重电磁铁和相同的永磁体,并瞄准大约 140 克的地球重量(包括磁铁)。

地球升降控制系统

那么它是怎样工作的 ?好吧,我将尝试以一种简单的方式进行解释——同时,请留意下图。

首先,我们需要确定地球的垂直位置。该位置由霍尔效应传感器测量,这是一种微型设备,可测量磁场强度(由安装在地球内部的磁铁产生),并将其转换为电压。如果地球更靠近传感器,磁场强度会增加,输出电压会发生变化。在我们的例子中,由于磁铁的北极和南极以及霍尔效应传感器的定位方式,这个电压会降低。如果地球远离传感器,电压将再次增加。因此,传感器有效地将位置转换为电压!

这个(小)电压(通常在工作点介于 100 和 300 毫伏之间,具体取决于设置)由 Opamp IC8B 放大(参见示意图),然后由 Arduino ADC 转换为 10 位数。欢迎来到数字世界!(考虑到 10 位 Arduino ADC 分辨率,Opamp IC8B 的放大是必要的步骤,以更好地捕捉微小的变化)

请注意,从控制系统的角度来看,ADC 转换可以被视为第二个“放大”步骤:ADC 将输入电压缩放为 0 到 1023 之间的数字。将此数字视为(缩放)电压。

下一步,程序将从所需位置(称为“设定点”)中减去该数字(表示位置,但以毫伏表示),该位置也应以毫伏表示并适当缩放(我们只能减去以相同单位表示的值)。

减法为我们提供了与所需地球位置的偏差(我们称之为“误差信号”,因为当没有偏差时它为零)。该偏差(再次)以毫伏表示。

pYYBAGNsY-WAdbMyAADb_3C-Amk278.png
带有“真正的三项”控制器的地球升降控制系统
 

暂时忘记图中的“积分器”和“微分器”框(我稍后会谈到):我们有第三个放大步骤,这次是以数字方式执行的。放大系数(“增益”)作为常数存储在 Arduino 程序中。

请注意,从运算放大器 IC8B 的输入开始的总增益是所描述的三个放大步骤的乘积——这些步骤发生在interwetten与威廉的赔率体系 世界还是数字世界根本不相关!这个增益非常重要,因为更高的增益使得相同的(小)控制器输入(这里:位置偏差)产生更高的输出(这里:具有更高占空比的脉冲 - 我们会谈到)。想象一下这个总收益会非常小:不会发生很多事情,对吧?更一般地说,增益太低或太高,系统都有变得高度不稳定的风险,所以我们需要谨慎选择。

无论如何,然后将放大的误差信号馈送到 Arduino Nano Timer 1 以生成具有特定占空比(脉冲宽度调制)的脉冲:如果它为零,则占空比也将为零。如果为 999,则占空比为 100%。脉冲持续时间固定为恰好一毫秒。请参阅下面的示波器屏幕截图(蓝色通道)。

产生的脉冲将确定电磁铁的“开启”时间(使用功率晶体管 Q1 - 我们现在回到模拟世界)在那一毫秒内。这将增加或减少该毫秒内电磁体施加在地球磁铁上的“平均”力,结果地球的位置将发生变化。

poYBAGNsY-6ALF14AAG20IKUXaI736.png
随时间变化的地球垂直位置和磁铁占空比
 

正如您可能已经猜到的那样,整个过程每毫秒重复一次(中断驱动)。每个周期都通过读取 ADC 输出来开始,以获得霍尔传感器电压。如果地球处于稳定的浮动位置,该电压将接近设定点电压(在本例中:大约 1000 毫伏,是霍尔效应传感器输出的 10 倍)。与任何控制系统一样,这个电压会有一点波动:如果它不会波动,我们就不需要控制器。查看示波器屏幕截图(黄色通道)并验证地球每毫秒下降到地面大约 500 微秒,然后再次向上移动到电磁体(示波器上的“向上”实际上是“向下”,反之亦然。对此感到抱歉)。

那么这些积分器和微分器盒呢?出色地...

  • 将误差信号相对于时间进行微分并将该项添加到误差信号中可以对快速变化的地球位置做出更快的反应(对于较慢变化的地球位置,该项的影响会更小)。微分器时间常数 Τd(也是 Arduino 程序中的一个参数)控制该项的权重。它是所有参数中最关键的:必须仔细选择才能获得稳定性!
  • 为什么我们要整合误差信号(相对于时间)?好吧,想象一下系统处于静止状态并且实际的地球位置对应于设定点:这将误差信号以及 PWM 输出(占空比为零的脉冲)和电磁体施加在地球上的力降低到零。但这种情况是不可能的: 由于地球的重量,它需要一个反作用力。因此,地球的静止位置将略低于设定点指示的位置(这给我们留下了非零误差信号,因此,非零 PWM 信号和反作用力)。这称为“静态错误”。现在,如果我们对剩余的误差信号进行积分,控制器(PWM)输出将缓慢增加,地球位置将接近所需位置,误差信号将变为零,积分将停止......恰好当地球在我们想要的位置它是。正如您已经猜到的那样,积分器时间常数 Τi 是 Arduino 程序中的另一个参数。它不如 Τd 重要。

结论:这里有 4 个参数很重要。设定点、增益、积分时间常数和微分时间常数。您会发现这些常量在 Arduino 程序中定义。

为什么采样时间是 1 毫秒?为什么不是 10 毫秒?在自由落体中,最初处于静止状态的物体将在 1 毫秒内下降约 5 微米。在 10 毫秒内,这将增加到 0.5 毫米 (x 100)。人眼所感知的情况并不完全稳定,从控制系统的角度来看,保持系统稳定可能要困难得多。这就回答了!

电磁铁总成

这个组件包含我们需要的一切,除了用于地球旋转的线圈和 LED 灯带。

电磁铁非常强大,会产生相当多的热量。为了确保一切安全,在其顶部放置了一个相当大的散热器。此外,温度传感器固定在散热器上。它将用于连续控制温度。

散热器上方是一块木板(用于将组件“悬挂”在木灯笼中,无需任何螺母或螺栓)。就在下方,注意铝制角型材以将木板固定到位。螺纹垫片将板与散热器底部连接起来。

在散热器下方,使用相同的孔(当然,您必须钻孔),我们有另一组螺纹垫片到达有机玻璃板,固定我们用于垂直位置测量的传感器(霍尔效应传感器)。

 
 
 
poYBAGNsY_SAS_YjAACulhON6NY582.png
 
1 / 2电磁铁组件:侧视图
 

有机玻璃尺寸为 90 x 105 毫米。后边缘从霍尔效应传感器(电磁体中心)位置延伸 67 毫米。请注意,最后一个维度很重要,因为这是将保持球形旋转霍尔效应传感器的 3D 组件连接到有机玻璃的位置。我们稍后会讨论这个。

此外,您必须切割有机玻璃板并在其中钻孔。首先仔细测量并制作一些草图,将证明是一个很大的帮助!

重要提示:确保垫片(以及有机玻璃下方的螺栓)没有磁性

升降霍尔效应传感器

有几种方法可以准确测量地球仪和电磁铁之间的距离——更准确地说,测量期望位置(“设定点”)和实际位置之间的偏差。一种常见的方法是在球体的一侧使用光源,在另一侧使用光检测器。但在我们的案例中,如前所述,我们使用霍尔效应传感器测量磁场强度(取决于地球位置)并将其转换为电压。

实际上,这个传感器不会参照电磁铁来控制地球仪的位置,而是参照传感器本身。但是因为这个传感器是固定位置的,这最终会确定设定点:地球相对于电磁铁的位置。

 
 
 
poYBAGNsY_eAH9s2AAFV2mJKmkk863.png
 
1 / 2升降霍尔传感器:水平位置
 

如前所述,电磁铁和传感器(或有机玻璃板)之间的垂直距离至关重要。

配合我使用的电磁铁(高度40mm),有机玻璃板距离散热片58mm(可以通过堆叠15mm和40mm螺纹垫片,中间加一个螺母)。这在电磁铁和霍尔传感器之间产生了 18 毫米的“间隙”。

您可能会问一个问题:电磁铁的磁场不会影响传感器读数吗?嗯,是的......但这不是问题,因为当我们读出传感器值(每毫秒)时,电磁铁始终处于相同('ON')状态(您可以通过查看示波器屏幕截图来验证这一点, 以上)。所以,它的属性是不变的,可以被丢弃。

这个霍尔效应传感器需要正好放置在磁铁中心点的下方。如果没有,您将在系统中引入振荡,您的地球将开始在水平方向“摆动”,这是电磁体无法控制的。您将必须弄清楚如何确定该位置。在视觉上进行操作时,请考虑一种称为“视差”的东西。建议:一旦你确定了那个点,就在有机玻璃的底部放一个小点。这将帮助您定位霍尔传感器。

pYYBAGNsZASAVw1oAAOy47FRe3Q356.png
电磁铁总成:仰视图
 

霍尔效应传感器放置在一个带有精密触点的插座中,粘在有机玻璃板上(我使用的是 Loctite 强力胶)。由于传感器引线未焊接,因此可以轻松微调传感器位置。假设我们使用的是 SS 495A 传感器,冲压面必须朝下(Arduino 程序假定它)。

粘合容器时,确保有机玻璃板清洁干燥。稍后我们将处理 PCB 连接。

温度感应器

温度传感器连续测量散热器温度:当它超过设定的阈值时,磁铁和线圈将被关闭。

您需要安装传感器,使其与散热器有良好的机械接触。如何做到这一点在很大程度上取决于所使用的散热器。

poYBAGNsZAaAMkS0AAF69Dpj5HQ821.png
温度传感器安装
 

稍后我们将处理 PCB 连接。

全球

我找到了一个地球仪用作存钱罐。这样做的好处是底部有一个很大的开口(缺点也是有一个投入钱的槽)。在这种情况下,我们将使用这个开口在内部放置一个强永磁体(钕,20 x 20 x 20 毫米),靠近地球的地理北极。我用双面胶带来做到这一点。你需要一些整容技能和良好的思维来完成这项工作,而不必打开(并可能损坏)地球,但是......这是可能的。

pYYBAGNsZAmAD-geAABj16C6YP0060.png
地球起重磁铁
 

确保将磁铁的北极朝上放置(一个立方体有六个面,所以你必须做一些实验)。请注意不要在这里犯错:如果将磁铁倒置,您将无法使其工作!最好是用指南针来确定磁铁的北极:磁铁的北极吸引指南针的南极:这是指向地球地理南方向的指针(这看起来很奇怪,但是地球的磁北位置很近到地球的地理南方,反之亦然)。

稍后,如果施加在地球磁铁上的力被证明是排斥而不是吸引,您将不得不反转电磁线。但现在不要担心。

但我们也希望地球旋转,对吧?这将需要在地球内部放置两个额外的(较小的)磁铁。这些也是钕类型。再说一次,我很幸运……我使用的地球仪是由两半塑料制成,有一个内边框(红色)用于将它们粘合在一起(我猜)。这个边界是放置这两个磁铁的理想位置:一个在格林威治子午线,另一个……当然在对面(反子午线)。请注意,我使用了双面胶带。

pYYBAGNsZAuAYbZyAABRZrIBV2I579.png
地球旋转磁铁
 

重要提示:将磁铁定位在格林威治子午线,北极朝上,另一个北极朝下。磁铁会产生一个(非常小的)扭矩,让地球保持旋转——但这会在以后发生。

地球旋转线圈

为了产生地球旋转扭矩,我们需要一个旋转磁场。放置在地球下方的六个线圈将用于此目的。

你必须自己制作这些线圈,用空线轴(我在互联网上找到这些)和 500 匝漆包铜线(直径 0.28 毫米)。假设您使用的线圈与我的相似,这将产生大约 20 欧姆的线圈电阻,这很好。

线圈由带有六个旋钮的 3D 打印蜘蛛固定到位,与线轴的中心孔紧密配合。蜘蛛本身通过两个螺丝固定在有机玻璃板上。

 
 
 
poYBAGNsZA6ALGSNAAFTG0Xfstk273.png
 
1 / 2地球旋转线圈:顶视图
 

一个两针接头焊接到每个线圈上,这些接头都连接到一个更大的 15 针插座(带有 3 个未使用的针),粘在中间的蜘蛛上。

线圈从 1 到 6 编号(查看图片“地球旋转线圈,在灯笼中”),线圈端子标记为 A 和 B。

如果从顶部向下看线圈,绕组方向(从第一圈到最后一圈)为顺时针方向,我们将端子 A 定义为铜绕组第一圈的起点(靠近线轴中心)和端子B作为最后一匝铜绕组的末端。

如果绕线方向是逆时针方向,那么我们将第一圈的起点指定为终端 B,将最后一圈的终点指定为终端 A。

线圈将成 3 对一起工作:线圈 1 和 4、2 和 5、3 和 6。因此,我们将 2 针接头(线圈端子)连接到插座,如图所示“地球旋转线圈:关闭-连接,顶视图',下面。如您所见,线圈“B”端子对于每个线圈对都是简单互连的。线圈“A”端子的插座引脚焊接到扁平电缆(6 线)上。

在扁平电缆的另一端,我们稍后将焊接一个插座。暂时预见充足的电缆长度。

当然,有机玻璃板必须切割成所需的尺寸,具体取决于您使用的灯笼。参见图片“地球旋转线圈,在灯笼中”。

 
 
 
pYYBAGNsZBWACLGfAANZ-AvrP40513.png
 
1 / 2地球旋转线圈,在灯笼中
 

如果一切都正确连接,在任何给定时刻,三个相邻线圈的垂直磁场方向将与其他三个线圈的磁场方向相反。每隔一段时间,这个磁场就会逆时针旋转 60 度(从顶部看线圈)。这将在地球的两侧磁铁上产生扭矩。此外,这种轮换将与 Arduino 程序的预期同步。因此,仔细遵循连接说明非常重要。

为了获得更好的视觉效果,线圈位于两个地球旋转磁铁下方约 130 毫米处。由于我们不需要太大的扭矩,即使有这个距离,我们也能够保持地球旋转。

poYBAGNsZBmADR3DAAGpgHIbJEw950.png
地球垂直位置
 

地球旋转传感器组件

该组件由六个 3D 打印部件组成。其目的是定位球形旋转霍尔效应传感器,使其可以拾取安装在球形内部的 2 个球形旋转磁铁的通道。因此,它允许霍尔传感器水平移动(通过向前或向后移动“垂直连接器”部分)和垂直移动(通过在其插槽中向上或向下滑动“霍尔传感器外壳”)。就位后,两个螺母将霍尔效应传感器牢牢固定在位。

poYBAGNsZByAF-omAAF7YiifuPA290.png
地球旋转传感器组件 - 3D 零件(来自 STL 文件)
 

霍尔传感器本身放置在“霍尔传感器外壳”下端的小管内。一个精密接触的插座粘在它的背面(我使用 Loctite 强力胶)来接收三个霍尔传感器引线。

由于传感器引线未焊接,因此可以轻松微调传感器位置。假设我们使用的是 SS 495A 传感器,标记的一面必须朝上(Arduino 程序假定它)。

 
 
 
poYBAGNsZCCAZ3eTAADzO86sar0387.png
 
1 / 2地球旋转传感器相对于通过磁铁的位置
 

安装霍尔效应传感器是一项简单的任务:只需将 3 根引线弯曲成 90° 位置,将传感器滑入小管内(从后向前),然后使用镊子将 3 根传感器引线精确地放入插座中- 联系人。

地球自转控制系统

如前所述,地球下方的旋转线圈将对地球施加微小的扭矩(因为地球内部安装了两个小磁铁)。这个扭矩是如此之小,以至于如果两个速度(磁场和地球)相距不太远,它只会使地球的旋转与(“锁定”)旋转磁场(由六个线圈引起)同步。

作为旁注,我们也有地球磁场试图将地球变成指南针,这当然无济于事:事实上,如果关闭线圈,地球将始终定位自己,使其两个磁铁指向地球的磁北极和南极。旋转磁铁的磁极朝上和朝下的事实并不能阻止这一点,因为地球磁场线不水平延伸 - 在大多数地理区域,它们具有垂直分量!

无论如何 - 我们需要某种类型的控制系统 - 但没有像前面描述的升降控制系统(它基于纯控制理论)。

首先,控制器需要了解地球的旋转速度。我们不会直接测量这个速度(尽管有方法可以做到这一点),但我们会测量每个地球自转的时间。正如您已经猜到的那样,旋转霍尔传感器提供此输入。它只检测到“格林威治反子午线”磁铁的通过 - 另一个旋转磁铁(在格林威治子午线)安静地通过。

poYBAGNsZCOAGI72AAF3V_fzeAs546.png
格林威治磁铁通道:脉冲整形
 

运算放大器 IC8A 和 IC8D 周围的电路将旋转霍尔传感器作为输入(示波器屏幕截图 - 蓝色通道)并提供脉冲(黄色通道),然后由施密特触发器 (IC8C) 进一步整形。施密特触发器输出(未显示)由 Arduino Nano 采样并用作控制器输入。

如果当前地球旋转速度太低(低于所需速度),则旋转磁场速度将设置为略高于当前地球旋转速度的速度(反之亦然)。这个过程在地球每转一圈时重复,直到地球旋转速度达到所需旋转速度附近的一个小范围。在该频带内,控制系统被关闭,旋转磁场速度被固定为所需的旋转速度,一劳永逸。地球旋转现在“锁定”或“同步”旋转磁场。

此处描述的控制系统只有在旋转磁场的相位设置正确(参考旋转地球仪)的情况下才能工作。该程序会解决这个问题,但这需要线圈的正确接线以及线圈在水平面上相对于霍尔传感器的位置的正确相对定位(参见图片'地球旋转线圈,灯笼')。

LED灯条

因为在黑暗中漂浮和旋转的地球仪并没有多大吸引力,所以添加了两条数字 LED 灯条作为最后的触感。每个 RGB LED 都是单独可控的,只需要四根线:接地、5 伏、数据和时钟

这些 LED 灯条按“米”出售,您可以轻松地将它们切割成所需的长度。在这种情况下,每个 LED 灯条包含 8 个 LED。我使用的类型在背面也有一个非常方便的胶带,可以很容易地定位 LED 灯条并将它们固定到位(可能你还需要一些小木轨)。

时钟线稍后将连接在一起,数据线也将连接在一起(我们将向两个 LED 灯条发送相同的数据)。现在,只需将足够长度的 4 线扁平电缆焊接到每个 LED 灯条的输入侧(数据流由箭头清楚地指示,如图所示)。作为应力消除和保持扁平电缆就位,最简单的方法是将它们粘在灯笼上。稍后我们将处理这两条扁平电缆的另一端。

poYBAGNsZDWANLrxAAYsn0hL4_k985.png
上下灯带
 

重要提示:为了保持低电流消耗,16 个 LED 中只有 8 个会被使用,甚至不会处于全功率状态。这足以获得漂亮的视觉效果。如果每个 RGB LED(额定电流为 60 mA)将同时打开并以全功率打开,这将消耗近 1 安培的电流。我们将使用其中的一小部分。

注意:为 LED 灯带供电的 l293D 半桥的最大额定电流为 600 mA。

对 Arduino Nano 进行编程

现在是对 Arduino Nano 进行编程的好时机。

下载并编译代码,通过 USB 将 Nano 连接到计算机并为 Nano 编程。目前为止就这样了。

印刷电路板

两层 PCB 承载所有电子设备,除了传感器、电磁铁、线圈和 LED 灯条。PCB 的设计非常谨慎,试图遵循良好的做法,例如充分利用电源层和尽可能多地分离模拟和数字组件区域(最大限度地减少呈现给模拟电路的数字逻辑引入的噪声 - 特别是电路的稳定性)浮球将取决于小于 0.5 毫伏的信号变化)。

poYBAGNsZD2AK8ryAARLWB2mWC8050.png
PCB顶面
 

该板包含许多额外的连接器,可提供大部分 Arduino Nano 引脚以及一些其他信号。这有助于使用该板进行超出本项目范围的原型设计活动。

CAD 部分提供了订购此 PCB 所需的文件(“Gerber 文件”)。

以下不是对 PCB 原理图的完整解释。它只是为了让您对董事会的工作方式有所了解。

  • 该板使用 Arduino Nano端口 D(6 位宽)作为数据总线它提供线圈、LED、LED 灯条、可选 LCD 等数据,并读取开关和按钮状态。
  • IC10 将 3 位地址(由 Arduino端口 B 位 0、4 和 5 提供)解码为 8 条 I/O 选择线。其中四个选择线将选择 IC2 触发器以将数据写入(以控制线圈)、IC3 触发器(以控制 LED 等)、IC4 缓冲器(以读取开关和按钮)或 LED 灯条。未使用的选择线连接到扩展连接器 (SV5)。请注意,(可选)LCD 芯片选择直接连接到 Arduino Nano 引脚(检查代码),因为它是通过 LiquidCrystal 库访问的,该库当然不使用解码器芯片来选择 LCD。
  • IC5 和 IC6 各包含 4 个半桥,通常用于控制电机等。我们使用 IC5 和 IC6 的一半来驱动六个线圈。IC6 剩下的两个半桥用于给 LED 灯条供电(它们不直接连接到 Vcc),并让软件控制红色 LED。
  • 运算放大器 IC9A 和 IC9D 形成某种“硬件看门狗”。如果软件未能定期将其输入的信号从高电平切换到低电平,反之亦然,其输出将变为低电平,发出错误信号,有效地关闭电磁铁、线圈和 LED 灯带,并打开红色 LED。
  • Opamp IC8B 将升降霍尔传感器放大 10 倍。重要提示:通过将电阻器 R10 和 R12 的值从 100K 更改为 150K,您可以将放大倍数增加到 15(这提供了更高的 ADC 精度)。如果这样做,则必须相应地更改 Arduino 程序中相应的#define 语句。这表明程序需要调整一些常数(例如数字增益)。
#define highAnalogGain 1                                    // 0: analog gain is 10,          1: analog gain is 15 (defined by resistors R9 to R12)
  • 运算放大器 IC8A、C 和 D 用于对来自旋转霍尔传感器的信号进行整形。
  • 运算放大器 IC9B 用作反相器,IC9C 根本不使用。

元件放置

零件在下图、电路板本身和所附示意图上清楚地标明。首先放置所有电阻器、二极管和小电容器。然后焊接 IC 插座(Arduino Nano 的母头),如果必须更换芯片,这将为您省去很多麻烦。完成所有这些后,放置并焊接剩余的组件。不要放置实际的芯片。顺便说一句,由于功耗低,我使用了 74HCT... 逻辑芯片,但 74LS... 芯片也可以工作(IC1 到 4,IC10)。

poYBAGNsZECAJS4CAAG7vfR1gw8686.png
主地球仪板:元件放置
 

最后要安装的部分是 VMA404 降压转换器它垂直安装,组件朝外,如下图所示。端子清楚地标在主板和降压转换器板上,因此您不会弄错。In- 和 Out- 指的是 GND 输入和输出,In+ 是指 24 伏输入,而 Out+ 显然是指转换器输出的电压。使用坚固的空线进行连接,以确保适当的刚性。

暂时不要连接端子 Out+。首先,插入外部 24 伏墙壁电源,调整转换器的微调电位器以获得 7 伏的输出电压,然后再次断开外部电源。此电压设置将确保电路板正常运行,而不会消耗过多的功率。

此时,也连接端子 Out+,重新连接外部电源并使用万用表或示波器运行一些测试,以验证您是否获得了预期的 5 伏电压,如图所示。

pYYBAGNsZEOAMMa-AAB9MTBm5bU590.png
降压转换器板安装
 

如果此测试成功,您现在可以放置所有芯片,包括 Arduino Nano。

暂时不要将 PCB 物理连接到电磁铁组件(使用垫片)——如果出现问题并且您需要进行故障排除,这将为您节省一些时间。

PCB连接器

我们需要连接三个传感器(温度和两个霍尔效应传感器)、电磁铁、线圈和 LED 灯条(当然,我们还需要电源)。

  • 电源由插入 PCB 直流连接器的外部 24 伏墙壁电源适配器供电。首先检查极性是个好主意:将 24 伏 (+) 传送到中心引脚。
  • 电磁铁:您将不得不(稍后)进行实验以确定两条电线的极性。如果施加的力是排斥而不是吸引......你需要切换电线。
  • 线圈:将 10 针接头连接器焊接到之前连接到线圈的 6 线扁平电缆(留出 4 个端子)。首先,将图中“地球旋转线圈:连接特写,顶视图”(在“地球旋转线圈”部分)中的信号名称与下图中相同的信号名称匹配,以了解哪根线连接到哪个插头引脚. 这些信号被标记为“COILPAIRn-x”,n = 0 到 2,x = A 或 B。
  • LED灯条:PCB LED灯条连接器有5个引脚。最靠近直流电源插孔的针脚 1 提供 5 伏电压。引脚 2 和引脚 3 是两条数据线。引脚 4 提供时钟信号,引脚 5 为 GND。使用匹配的接头连接器将来自两个 LED 灯条的扁平电缆连接到 PCB 连接器(分别将 GND、5 伏、数据和时钟线连接在一起)。注意:作为替代方案,您可以决定将两个 LED 灯条的数据信号分开,将两条数据线分别连接到连接器引脚 2 和 3。目前,这些引脚提供相同的数据,但这将允许分别控制两个 LED 灯条(当然,通过更改程序)。
pYYBAGNsZEyAQNrgAANVijyxF5c476.png
PCB 连接器 (1)
 
  • 传感器连接器(示意图:J3、J4 和 J5)每个都需要接地、5 伏和传感器信号输出线连接到相同的相应连接器引脚(见下图)。因此,如果您稍后在将传感器连接到 PCB 时出错,则不会发生任何故障(但您的电路板当然无法正常工作)。我建议不要使用升降霍尔传感器的连接器(连接器 J3),但是将电线直接焊接到板上,不要使它们比需要的长,因为测量的电压变化很小(小于 0.5 毫伏)。注意:传感器引脚排列与相应的连接器引脚不同。检查传感器的数据表!
poYBAGNsZFCAFvzyAAFdO-vhLCs299.png
PCB 连接器 (2)
 

测试和调整

当然,我只能给你一些一般性的指导方针,但我建议使用这个路线图进行测试:

  • 测试 1:验证与 PC 上的串行监视器的通信(通过 USB)。确保所有 DIP 开关都处于关闭位置,并验证串行监视器的波特率是否与 Arduino 程序设置的波特率相对应(标准 1000000 波特 - 最好不要更改)。插入 USB 电缆(您不需要为 PCB 板通电,也不需要进行任何其他连接)并验证 Arduino 是否响应以“Type + or - to change”开头的消息显示参数,E 编辑值,..." 重置后。
  • 设置:在串行监视器中,键入“A”+ ENTER。Arduino 将响应参数和值列表。检查旋转时间设置('rot time')是否为 12 秒,垂直地球位置('vert pos')设置为 1000 毫伏(或 1500 毫伏,如果您将模拟增益更改为 15 - 请参阅“PCB”部分)。如果不是,请参阅“串行通信”部分来设置这些值。
  • 测试 2:对于这个测试,暂时忘记地球旋转和 LED 灯条。只需连接温度传感器(如果不连接,电路板将检测到“高温”并且不允许为电磁铁供电)。连接起重霍尔传感器和电磁线。打开。您应该看到绿色 PCB LED 闪烁。等待 5 秒钟。蓝色 PCB LED 应该开始闪烁(关于 LED 颜色和含义的完整解释将在后面给出)。现在,沿着升降霍尔传感器(和电磁铁)的方向缓慢向上移动地球(带有大起重磁铁),直到它接触到有机玻璃板。然后将其从传感器上向下移动。这使电磁铁和升降控制系统成为可能。让地球再次靠近磁铁,您现在应该观察到电磁铁和起重磁铁之间的吸引力。如果观察到排斥力,则需要切换两根电磁铁的线。
  • 测试 3:尝试将地球“悬挂”到位(程序在下一节中解释)。
  • 测试4:断电,同时连接旋转霍尔效应传感器,上电。再次将地球仪悬挂到位并稍微转动(逆时针)。将示波器连接到 IC8A 引脚 9(施密特触发器输入),并验证您看到的波形看起来像上一节中“格林威治磁铁通道:脉冲整形”图中的黄色波形。如果不是,则尝试通过调整旋转霍尔传感器的水平和垂直位置来获得此波形(松开两个螺母 - 参见“3D 组装”部分)。
  • 调整施密特触发器输出:将示波器通道 2 连接到 IC8C 引脚 8(施密特触发器输出)。通过调整微调电位器 R8,将输入阈值电压(示波器通道 1)设置为 0.8 伏(或多或少)。假设您给地球的旋转速度在 10 到 15 秒之间,这应该会在 180° 子午线每次通过旋转霍尔传感器时产生 0.5 到 1 秒之间的脉冲。
  • 测试5:断电,接好线圈,上电。再次将地球仪悬挂到位并稍微转动(逆时针)。旋转控制系统现在应该启动。大约 30 秒后,PCB LED 应该熄灭,表示已获得设定的旋转速度。
  • 测试 6:现在,连接 LED 灯条。然后,使用串行监视器命令(在下一节中解释)设置 LED 灯条循环 5(循环通过所有颜色)和 LED 灯条时序 1(最快)。验证 LED 灯条是否正常工作(请记住,并非所有 LED 都已使用)。

有关如何处理地球仪、状态 LED 和串行通信的更多详细信息,请参阅下一节。

定位地球仪

当您启动系统时,您可以立即将地球仪“悬挂”在适当的位置(电磁铁下方约 35 毫米,或固定升降霍尔传感器的有机玻璃板下方约 15 毫米):只需观察安装在印刷电路板。如果它呈稳定的绿色亮起,则表明您处于正确的高度。如果它闪烁(绿色),你要么太高要么太低。它需要一些练习(不过不要太多),但应该相当容易。

一旦地球漂浮,稍微转动(逆时针)并等待......取决于你给它的初始旋转速度(这不是关键),一段时间后,地球将达到其设定的旋转时间(标准 12 秒)。

状态指示灯

LED 熄灭:地球处于浮动状态,并且地球旋转已锁定(与线圈产生的旋转磁场同步)。

LED 亮起(绿色或蓝色):

  • 绿色 LED 闪烁约。每秒 4 次:地球不在狭窄的“浮动”范围内。在定位地球仪时,使用它来指导您确定地球仪和电磁铁之间的正确距离。
  • 绿色 LED 持续亮起:地球处于浮动状态,但尚未检测到格林威治位置同步(格林威治反子午线磁体通过)。旋转线圈关闭。
  • 绿色 LED 快速闪烁(大约每秒 16 次):地球在浮动;正在进行第一次旋转时间测量。旋转线圈关闭。
  • 蓝色 LED 持续亮起,但闪烁更亮(绿色):地球处于浮动状态,但地球旋转尚未锁定。绿色闪烁表示旋转磁场的方向正在改变。蓝色闪烁表示格林威治磁铁当前正在通过旋转霍尔传感器

LED 呈蓝色闪烁:起重磁铁和线圈当前因错误情况而关闭。连续 1 秒闪烁的次数(随后是停顿)指示导致错误情况的原因:

  • 1 次闪烁:地球掉落超过 5 秒(地球可能掉落或被拿走,或上电后未检测到地球)。
  • 闪烁 2 次:粘性地球仪:地球仪位置过高超过 5 秒(地球仪可能粘在有机玻璃板上)。
  • 闪烁 3 次:在过去的几分钟内,起重磁铁的平均占空比高于 80%(这种情况极不可能发生,但因为这关系到安全......)。
  • 闪烁 4 次:平滑后的温度读数高于 65° 摄氏度。

要再次启用该系统,请将地球仪靠近装有升降传感器的有机玻璃板(向上移动),然后再次将其从有机玻璃板上移开(向下移动)。LED 现在将再次变为绿色,您将有(再次)5 秒时间将地球仪带回其浮动位置。

LED 为红色:如果由于故障或程序错误,程序停止在运算放大器 IC9A 和 IC9D 周围的电路输入端产生脉冲(充当硬件看门狗),起重磁铁和线圈将被禁用,LED 将转动红色的。

串行通讯

通过 USB 使用 Arduino 串行监视器(或其他正确配置的“终端”软件),您可以打印某些信息并更改一些设置。

可以打印以下信息(“参数”):

  • 当前选择的旋转时间(设置
  • 实际旋转时间
  • 自转时间同步误差:累计地球自转时间误差(锁定时)
  • “全球旋转锁定”时间。地球旋转未锁定时重置
  • “地球漂浮”时间。地球不浮动时重置
  • 温度(摄氏度)
  • 起重磁铁平均占空比 (%)
  • 地球垂直位置:以毫伏为单位的参考(设定点)(设置)。请注意,设定点值是指 ADC 读取的值,因此它们被缩放为 10(或 15 - 参见 PCB 部分)乘以霍尔传感器输出垂直位置
  • ADC 读取的以毫伏为单位的球体垂直位置误差绝对值的平滑平均值
  • 积分项的当前值,由全球升降控制器计算
  • 旋转磁场和旋转地球之间的平均相位(​​锁定时)。可用于校准旋转磁场与地球仪之间的相位,由地球仪旋转控制器在获得锁定之前设置
  • “ADC 转换完成”ISR 例程的平均持续时间(以微秒为单位)(平滑)
  • 平均处理器负载(平滑)

此外,每个状态变化都会被打印出来(例如,达到了选定的旋转时间)。

pYYBAGNsZFKARi67AACaCc5JxfE019.png
串行监视器:'A'(显示全部)命令输出
 

使用以下命令打印参数及其值或更改设置(不需要发送“回车”,尽管您可能必须按 Enter 将命令发送到 Arduino,具体取决于您使用的终端软件)。

  • '+' 或 '-' : 打印下一个或上一个参数。在编辑模式下:从列表中选择下一个或上一个参数值。
  • 'E':编辑当前参数。在编辑模式下:结束编辑并将当前选择的参数值保存在 EEPROM 存储器中。只对改变旋转时间和微调地球垂直位置有效,对其他参数无效。
  • 'C':取消编辑而不保存。不处于编辑模式时没有功能。
  • 'S' 开始或停止显示实时值。这将开始或停止定期将当前所选参数的实际值打印到串行监视器(例如完成最后一次地球旋转所花费的时间)。不适用于设置。
  • 'A':一次打印所有参数,以及当前的灯带设置。
poYBAGNsZFaAW5gmAAD1GgMBJC4301.png
串行监视器:状态和命令示例
 

附加命令:

  • '?':打印可用命令(帮助)。
  • 'T':打印时间戳(自上次重置以来的毫秒数 - 实时时钟不可用)。
  • 'LC0' to 'LC5':选择一个灯带周期。0 = 关闭,1 = 恒定亮度白色,2 = 恒定亮度洋红色,3 = 恒定亮度蓝色,4 = 白色和蓝色之间的渐变,5 = 所有颜色之间的平滑循环(从蓝色到青色、绿色、黄色、红色、洋红色,又是蓝色,...)。选择存储在 EEPROM 存储器中。
  • 'LT1' to 'LT4':改变灯带循环时间。1 = 最快(分钟),4 = 最慢(小时)。请注意,时间与所有 LED 灯条循环类型无关。选择存储在 EEPROM 存储器中。
  • “R0”和“R1”:(阶跃)响应。应用阶跃变化 ('R1') 或不应用步骤('R0')到地球垂直位置参考(设定点),然后将测量的响应(实际地球垂直位置)和控制器输出(PWM 占空比)发送到串行监视器,在那里可以记录它以在 excel 等中进行评估。应用的步长(仅“R1”命令)以 100 个 ADC 步长增加垂直位置设定值。在霍尔传感器输出处以毫伏表示:100 ADC 步 *(5000 毫伏/1023 ADC 步)/10 = 49 毫伏(如果模拟增益设置为 10 - 请参阅“PCB”部分)。Arduino 开始将数据发送到串行监视器,在应用步骤前 1 秒(“R1”命令)并继续发送数据 20 秒。每毫秒发送一行包含三个值的行,这些值用分号分隔。值 1:毫秒(1 到 20000)值 2:
poYBAGNsZFuAJqrvAAGPzf5Tnmw631.png
记录阶跃响应(提取)和 Excel 阶跃响应图表 - 模拟增益为 15
 

关于使用“R0”和“R1”命令的一些注意事项

  • 'Rn' 命令需要高波特率:程序设置的波特率为 1000000,所以这应该不是问题。
  • 积分项的值(参见“地球升降控制系统”部分),包括在“Rn”输出(第一毫秒)开始处的额外精度数字(参见“Arduino Nano 代码”部分),打印到串行监视器为这允许基于记录的霍尔效应传感器值(在 ADC 步骤中)在 excel 中“重放”控制器计算,验证在 excel 中计算的控制器输出与记录的控制器输出是否相同。
  • 发送阶跃响应数据结束后,地球仪的垂直位置会慢慢恢复到原来的设置。
  • 显示实时值时不要使用此命令(请参阅“S”命令)

使用硬件按钮和 LCD

可以将 4 个按钮(“+”、“-”、“E”和“C”)直接连接到 Spinning Globe 板 PCB,以及 16 x 2 字符、Arduino 兼容的 LCD 显示屏。

这允许您查看相同的实时值并更改与使用串行监视器相同的设置。

LCD 在顶行显示状态信息(例如“E! drop globe”),在底行显示当前选择的参数(参见“串行通信”部分)。

请注意,不能使用硬件按钮更改 LED 灯条设置。它们也不显示在 LCD 上。

连接(“接通”触点)按钮:使用连接器 SV2。

  • “-”按钮:将一个引脚连接到信号“SW0”(SV2 引脚 2),另一个引脚连接到 GND
  • “+”按钮:将一个引脚连接到信号“SW1”(SV2 引脚 4),另一个引脚连接到 GND
  • “E”按钮:将一个引脚连接到信号“SW2”(SV2 引脚 6),另一个引脚连接到 GND
  • “C”按钮:将一个引脚连接到信号“SW3”(SV2 引脚 8),另一个引脚连接到 GND

按下这些按钮与使用串行监视器(或其他终端软件)发送等效命令的效果相同。

重要提示:确保 DIP 开关 2 至 5 都处于关闭位置。这些开关分别连接到信号“SW3”到“SW0”,与这 4 个按钮并联。将开关设置在 ON 位置会将相应的信号连接到 GND,使相应的按钮无法操作。此外,如果这些开关之一在复位或上电后立即处于 ON 位置,则系统进入编程模式(见进一步)。

连接 LCD:使用通用连接器 SV5 连接基于 Hitachi LCD 控制器的可选 2 x 16 字符 LCD。

  • 使用 4 位总线将数据发送到 LCD
  • LCD 在只写模式下工作:将 LCD 读/写引脚接地
  • 将 LCD 数据位 4 到 7 引脚连接到信号“D4(PD4)”到“D7(PD7)”(Arduino 端口 D 位 4 到 7,参见示意图)
  • 将 LCD RS寄存器选择)引脚连接到信号“D3(PD3)”(端口 D 位 3)
  • 将 LCD 使能引脚连接到信号“PB2”(Arduino 端口 B 位 2)
  • 正确连接电源、LCD 对比度和背光 LED 引脚(使用 LCD 数据表中指定的电阻器 - PCB 上未提供电阻器)
poYBAGNsZGiAfrClAAGMwVDR2wo354.png
可选的 2 x 16 字符 LCD,连接到 PCB 连接器 SV5
 

使用 DIP 开关更改设置(程序模式)

无需使用串行监视器或按钮/LCD,即可设置地球旋转时间、微调地球垂直位置设定点或设置 LED 灯条周期和时间。

进入和退出程序模式的步骤:

1.电源关闭时,使用 DIP 开关 2 至 5(信号 'SW3' 至 'SW0')指示要更改的设置,如下所述。不要使用任何其他开关设置。请注意,当前未使用 DIP 开关 1(信号“SW4”)。

  • ON ON ON ON:更改灯带设置
  • ON ON ON OFF:设置旋转时间
  • ON ON OFF ON:微调地球垂直位置参考

2.开机。然后,当电源打开时,如下所示设置 DIP 开关。

=> 如果初始开关设置为ON ON ON ON:设置ledstrip周期和时序,如下:

  • ON ON ON ON:关闭灯带
  • ON ON ON OFF:恒定亮度白色
  • ON ON OFF ON:恒定亮度洋红色
  • ON ON OFF OFF:恒定亮度蓝色
  • ON OFF (T1) (T0):在白色和蓝色之间渐变
  • OF ON (T1) (T0):在所有颜色(蓝色、青色、绿色、黄色、红色、洋红色、蓝色...)之间循环
  • 其他开关设置不影响最后设置的灯带周期和时序

(T1) (T0) 设置灯带时序:

  • ON ON:计时1(最快)
  • ON OFF:定时2
  • OFF ON:定时 3
  • OFF OFF:定时4(最慢)

=> 如果初始开关设置为ON ON ON OFF:设置地球旋转时间,如下:

  • ON ON ON ON:地球旋转关闭(“指南针”行为)
  • ON ON ON OFF:12秒
  • ON ON OFF ON: 9 秒
  • ON ON OFF OFF:7.5秒
  • 开 关 开 6 秒
  • ON OFF ON OFF:4.5秒
  • 开 关 关 开:3 秒
  • 开关关关:2.4秒
  • 其他开关设置:地球旋转关闭

=> 如果初始开关设置为ON ON OFF ON:微调球体垂直位置设定值(以毫伏为单位),如下所示:

  • ON ON ON ON: 1000 毫伏
  • ON ON ON OFF:1200毫伏
  • ON ON OFF ON:1400毫伏
  • ON ON OFF OFF:1600毫伏
  • ON OFF ON ON:1800毫伏
  • 其他开关设置:1000毫伏

请注意,设定点值是指 ADC 读取的值,缩放为设置垂直位置的霍尔传感器输出的 10 倍。如果您将模拟增益更改为 15(参见“PCB”部分),设置的值将分别为 1500、1800、2100、2400 和 2700 毫伏。

3.关机。然后,在电源关闭时,再次将开关 2 至 5 设置为“关闭”。所需设置已存储(在 EEPROM 存储器中)。

4.再次开机。

Arduino纳米代码

该程序有很好的文档记录,因此我将在此处保持简短。

该程序专为速度而设计。特别是,中断服务程序 (ISR) 不使用浮点数。这意味着,例如,起重控制器的计算是使用(长)整数完成的,通过添加额外的“二进制分数”数字并在计算结束时删除它们来提高准确性(将值向左或向右移动多个位) .

注意:因此,必须注意,如果特定常量发生更改,则不会出现下溢或下溢的情况。

constexpr int PIDcalculation_BinaryFractionDigits{ 14 };									// added accuracy (binary fraction digits) in PID controller calculations
    constexpr int gain_BinaryFractionDigits{ 8 };												// added TTTgain accuracy (binary fraction digits) because of small TTTgain
    constexpr int TTTintFactor_BinaryFractionDigits{ 18 };										// added TTTintFactor accuracy (binary fraction digits) because of small TTTintFactor 							
    constexpr int TTTdifFactor_BinaryFractionDigits{ 3 };										// added TTTdifFactor accuracy (binary fraction digits) because of small TTTdifFactor
    constexpr int PIDcalc_preliminaryDivisionDigits{ 4 };										// to prevent overflow after multiplication (factor 1/2: keep 1 extra bit for safety)

此外,由于除法比乘法花费的时间长得多(没有处理器指令用于除法),所以 ISR 中没有。示例:将一个值除以一个常量“5”可以通过将该值乘以一个整数常量“51”(51 = 1/5 * 2^8)然后右移 8 位来执行。

这导致平均处理器负载约为 20%,这是由程序测量的,并且可以使用串行监视器进行验证。

主循环

主循环很短(一切都发生在许多专用程序中),但清楚地显示了一般结构。

  • 如果事件或用户命令可用,则将对其进行处理。如果不是,程序继续。事件由中断服务程序生成。用户命令由串行接口或(可选)硬件按钮组装而成。
  • 开关状态(在 ISR 中读取和去抖动)用于在需要时调整设置。
  • 数据(如果有)被发送到串行接口和可选的 LCD。
  • 如果 LED 灯条亮度需要改变(由特定的“LED 灯条”事件的发生表示),串行数据将被发送到 LED 灯条。
  • 只要无事可做,控制就会停留在空闲循环中。如果仍有要处理的事件(事件队列不为空)、键缓冲区不为空或发生中断(“定时器 1 溢出”或“ADC 完成中断”),则空闲循环将退出。
void loop()
    {
    getEventOrUserCommand();   // get ONE event or assembled user command if available
    processEvent();            // process event, if available
    processCommand();	       // process command, if available
    checkSwitches();           // if SW3 to SW0 to be interpreted as switches only
    writeStatus();             // print status to Serial (and LCD if connected)
    writeParamLabelAndValue(); // print label and value to Serial (and LCD)
    writeLedStrip();           // write led strip data 		
    myEvents.removeOldestChunk(ISRevent != eNoEvent); // remove event from queue

    wdt_reset();               // reset watchdog timer
    resetHWwatchDog = true;    // allow ISR to reset hardware watchdog													
    idleLoop();	               // return if still something to do or ISR occurred
    }

注意:作为一般原则,通过 Arduino Nano 端口 D“数据总线”(参见“PCB 硬件”部分)向硬件传输/从硬件传输的所有数据都是从 ISR 内部写入或读取的,因为无论如何这都会很快,但有两个例外:

1. LED 灯条数据通过同一端口 D 数据总线串行发送,这需要几毫秒(每次需要刷新 LED 灯条时发送 400 位) - 这将停止 ISR 执行。因此,主程序循环负责发送 LED 灯条数据。该程序确保在发送 LED 灯条数据被使用同一数据总线发送或接收数据的 ISR 中断时不会发生“冲突”。

2. 可选的 LCD 也使用相同的数据总线,并且也是从主程序循环中写入的,因为使用了标准的 LiquidCrystal 库,它不知道 PCB 上使用的硬件地址解码逻辑。

定时器 1 溢出中断

  • 每毫秒执行一次
  • 提供时基(定时器 0 未被程序使用,但未被禁用)
  • 重置硬件看门狗
  • 启动升降霍尔传感器 ADC 转换并启用“ADC 完成”中断
  • polls 地球仪旋转霍尔效应传感器
  • 读取和消除开关/按钮的抖动,并为按下/释放的按钮生成键码(如果已连接)

ADC 完成中断

  • 有时每毫秒执行两次:在提升霍尔传感器 ADC 转换完成时(每毫秒)和等温度传感器 ADC 转换完成时(每 128 毫秒)
  • 读取转换后的 ADC 值。如果这是一个提升霍尔传感器值,则继续。如果是温度传感器转换,存储温度并退出
  • 执行与提升控制、旋转控制、安全性相关的计算
  • 设置定时器 1 寄存器控制电磁铁 (PWM) 的脉冲占空比
  • 输出线圈、LED 等的数据。
  • 计算 LED 灯条亮度级别。注意串口数据会在主程序循环中发送到led灯条(因为比较耗时)
  • 使用“事件”向主循环发送信息:数据存储在动态内存中,指示事件的性质(例如,地球的旋转速度现在已获得设定值)以及一些额外的信息。主循环将处理事件并再次从动态内存中删除它们(参见类“MyEvents”)
  • 每 128 毫秒:启动温度 ADC 转换(这将触发一秒钟但非常短的 ISR 发生)

就是这样,伙计们

我试图使说明尽可能详细。但是,我意识到完整性是非常难以实现的,如果不是不可能的话。

我希望这个项目对一些人来说是一个学习的机会,对另一些人来说会很有趣。

成功 !


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费