模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

5300查看 | 22回复

[DIY交流] 做块PPM编码板玩模拟器

[复制链接]
发表于 2019-4-5 00:14:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
程序写的很糟糕
大神请略过   自己闲暇时意淫的小玩意  大家凑合着看看就行
用延时函数写的精度不高 但玩模拟器足矣 我在FMS 上测试通过
高电平1MS~2MS 低电平固定 0.1MS周期20MS  6通道
在此感谢 蛋糕大神的指点
老规矩上图贴代码
做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:ldy7474 6645

做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:ldy7474 3845

做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:ldy7474 2686

#include <STC15W408AS.h> //STC12C5A60S2 专用头
#include "STC15W-ADC.h" //STC15W4K-ADC 硬件ADC模数转换
#define uint  unsigned int
#define uchar unsigned char
//sbit PPM_OUT = P5^5;   //
sbit PPM_OUT = P2^5;
void PPW_Sent(void); // PPM波形产生
void delay_n_10us(uint n); //自己定义的延时n_10us函数
void Delay10us();  [url=]//@12.000MHz[/url]
unsigned int ADC0,ADC1,ADC2,ADC3,ADC4,ADC5,ADC6,ADC7,ADC8,calc_rest; //数模转换变量

/*------------------------------------------------
                  延时函数
------------------------------------------------*/
void Delay(unsigned char s)
{
unsigned char i,j;
for(i=0; i<s; i++)
  for(j=0; j<250; j++);
}

/*****************主程序************************/
main()
{
InitADC();      //ADC初始化
Delay(1);   //延时一会
while(1)
{
//读取摇杆模拟量与ADC按键

ADC1=ADC(0)/10; //油门
ADC2=ADC(1)/10; //航向
ADC3=ADC(2)/10; //横滚
ADC4=ADC(3)/10; //俯仰
ADC5=ADC(7)/10; //
ADC6=ADC(5)/10; //
PPW_Sent();
}      
{
  PPW_Sent();
  }

}

void Delay10us()  [url=]//@12.000MHz[/url]
{
unsigned char i;
i = 25;
while (--i);
}
void delay_n_10us(uint n) //自己定义的延时n_10us函数
{
        while(n)         
        {
                Delay10us();
                n=n-1;//每循环一次n减小1
        }   
}
//一个波形20ms,6个PPM波形,高电平每个波形最大1.4ms,最小0.6ms,低电平固定0.4ms
  void PPW_Sent(void) // PPM波形产生
{
  
   calc_rest=0;
   PPM_OUT=0;
   delay_n_10us(10);//0.4ms

    //通道1
    PPM_OUT=1;
    delay_n_10us(100);//0.6ms
    delay_n_10us(ADC1);//0~100
  calc_rest+=ADC1;
    PPM_OUT=0;
   delay_n_10us(10);//0.4ms
   

   //通道2
   PPM_OUT=1;
    delay_n_10us(100);//1ms
    delay_n_10us(ADC2);//1ms
  calc_rest+=ADC2;
    PPM_OUT=0;
   delay_n_10us(10);//0.4ms
   

//通道3
   PPM_OUT=1;
    delay_n_10us(100);//1ms
    delay_n_10us(ADC3);//1ms
  calc_rest+=ADC3;
    PPM_OUT=0;
    delay_n_10us(10);//0.4ms


   //通道4
   PPM_OUT=1;
    delay_n_10us(100);//1ms
    delay_n_10us(ADC4);//1ms
    calc_rest+=ADC4;
    PPM_OUT=0;
    delay_n_10us(10);//0.4ms


   //通道5
    PPM_OUT=1;
    delay_n_10us(100);//1ms
    delay_n_10us(ADC5);//1ms
    calc_rest+=ADC5;
    PPM_OUT=0;
    delay_n_10us(10);//0.4ms


    //通道6
    PPM_OUT=1;
    delay_n_10us(100);//1ms
    delay_n_10us(ADC6);//1ms
    calc_rest+=ADC6;
    PPM_OUT=0;
    delay_n_10us(10);//0.4ms
    PPM_OUT=1;
    delay_n_10us(1300-calc_rest);//
}




发表于 2019-4-5 06:02:50 | 显示全部楼层
路过
做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:灵魂无处安放 5923
回复 支持 反对

使用道具 举报

发表于 2019-4-5 06:11:28 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

发表于 2019-4-5 11:33:04 | 显示全部楼层
简易版。楼主试着加入失控的PPM信号
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-16 22:46:27 | 显示全部楼层
gceng04 发表于 2019-4-5 11:33
简易版。楼主试着加入失控的PPM信号

这个只是 简单的输出PPM  用来玩模拟器的
不涉及 高频信号发射
玩模拟器也没有失控这个说法

回复 支持 反对

使用道具 举报

发表于 2019-5-12 09:09:13 | 显示全部楼层
要把库函数也共享出来

回复 支持 反对

使用道具 举报

发表于 2019-5-15 21:37:33 | 显示全部楼层
请问有包含库的文件或者最终的hex文件么,希望可以共享一下,不行也没关系
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-15 19:33:46 | 显示全部楼层
vcijj 发表于 2019-5-15 21:37
请问有包含库的文件或者最终的hex文件么,希望可以共享一下,不行也没关系
...

包含库?嘛玩意
源码都贴出来了
链接:https://pan.baidu.com/s/13p_vvmyQac5gLc-b2YPahg
提取码:ui8g
这里有全部的文件你自己下载研究把
回复 支持 反对

使用道具 举报

发表于 2019-8-5 12:17:03 | 显示全部楼层

读了楼主的程序,觉得很好,但有几个问题请教
1   calc-rest 是何变量
2 delay-n-10μs(10);//0.4ms ?
3  delay-n-10μs(100);//0.6ms ?是否笔误?
回复 支持 反对

使用道具 举报

发表于 2019-8-10 20:53:50 | 显示全部楼层
着急,没看明白
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-11 15:16:34 | 显示全部楼层
zjs500217 发表于 2019-8-5 12:17
读了楼主的程序,觉得很好,但有几个问题请教
1   calc-rest 是何变量
2 delay-n-10μs(10);//0.4ms ?


1   calc-rest 是何变量
calc-rest是嗯怎么解释尼
程序开始是calc-rest=0;//用一个变量来统计每个通道高电平时间
  calc_rest+=ADC1;//这里就是把每个通道的高电平时间赋值给calc_rest
2 delay-n-10μs(10);//0.4ms ?
3  delay-n-10μs(100);//0.6ms ?是否笔误?
注释不是特别准确//0.4MS//0.6MS都不对
  void delay_n_10us(uint n) //自己定义的延时n_10us函数注意看这条延时函数执行一次延时10U微妙
delay-n-10μs(10);//0.4ms ?这里实际延时要看括号里的参数(10)那就是10*10=100US
刚开始是参考舵机驱动原理把高低电平时间固定了后期又修改了参数 注释没改
回复 支持 反对

使用道具 举报

发表于 2020-5-13 22:32:28 | 显示全部楼层
您好有线路图吗
回复 支持 反对

使用道具 举报

发表于 2020-5-13 23:10:40 | 显示全部楼层
ZHANGYI 发表于 2020-5-13 22:32 做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:黑礁 6418
您好有线路图吗

单片机用得  STC15W408AS
P1.0 通道1
P1.1 通道2
P1.2 通道3
P1.3 通道4
P1.4 通道5
P1.5 通道6
P1.6通道7
P1.7通道8
我用的是sop16
封装的只接了1/4通道



做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:黑礁 6715
回复 支持 反对

使用道具 举报

发表于 2020-5-20 15:33:23 | 显示全部楼层
这也是一个很实用的工具 感谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2020-5-20 16:03:30 | 显示全部楼层
这个属于遥控嘛?
回复 支持 反对

使用道具 举报

发表于 2020-5-23 19:30:09 | 显示全部楼层
黑礁 发表于 2020-5-13 23:10
单片机用得  STC15W408AS
P1.0 通道1
P1.1 通道2

谢谢,初学者,有完整的线路图吗
回复 支持 反对

使用道具 举报

发表于 2020-5-23 21:40:23 | 显示全部楼层
请问这东西的用途是什么?是不是连接遥控和电脑,然后可以玩模拟器了?
回复 支持 反对

使用道具 举报

发表于 2020-6-2 18:03:50 | 显示全部楼层
本帖最后由 zjs500217 于 2020-6-2 18:10 编辑
ldy7474 发表于 2019-8-11 15:16
1   calc-rest 是何变量
calc-rest是嗯怎么解释尼
程序开始是calc-rest=0;//用一个变量来统计每个通道 ...

谢谢解答 现在好像明白了,如果加个高频头就可以做个遥控器了。忘记密码了,好长时间进不去,今天进去了才回复。
回复 支持 反对

使用道具 举报

发表于 2020-6-2 21:56:48 | 显示全部楼层
ZHANGYI 发表于 2020-5-23 19:30 做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:黑礁 8498
谢谢,初学者,有完整的线路图吗

简单画了个示意图你凑合着看看吧
我的模拟器是直接飞线没弄什么电路图
做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:黑礁 5912
回复 支持 反对

使用道具 举报

发表于 2020-6-2 22:03:07 | 显示全部楼层
zuse1021 发表于 2020-5-23 21:40 做块PPM编码板玩模拟器 模拟器,编码板,高电平,低电平,小玩意 作者:黑礁 9366
请问这东西的用途是什么?是不是连接遥控和电脑,然后可以玩模拟器了?

额…这个相当于不带高频头的遥控器  当然这个遥控器没有微调  通道正反  混控  什么的  只写了最基本的通道输出  PPM用来玩模拟器

PPM输出端还是要接加密狗才能链接电脑玩模拟器
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!